Python 过滤字符串的技巧,map与itertools.imap


Posted in Python onSeptember 06, 2008

具体的实例
我们需要在目录中遍历,包括子目录(哈哈),找出所有后缀为:rmvb ,avi ,pmp 的文件。(天哪?!你要干什么?这可是我的隐私啊~~)

import os def anyTrue(predicate, sequence): 
return True in map(predicate, sequence) 
def filterFiles(folder, exts): 
for fileName in os.listdir(folder): 
if os.path.isdir(folder + '/' + fileName): 
filterFiles(folder + '/' + fileName, exts) 
elif anyTrue(fileName.endswith, exts): 
print fileName 
exts = ['.rmvb', '.avi', '.pmp'] 
filterFiles('/media/Personal/Movie', exts)

输出结果
来看看有什么好东东:
[66影视www.66ys.cn]迷失第四季04.rmvb
[迷失.第4季].Lost.S04E00.rmvb
[迷失Lost第四季][第02集][中文字幕].rmvb
《迷失Lost第四季》第05集[中文字幕].rmvb
《迷失Lost第四季》第06集[中文字幕].rmvb
《迷失Lost第四季》第07集[中文字幕].rmvb
天赐第2季01.rmvb
天赐第2季02.rmvb
天赐第2季03.rmvb
天赐第2季04.rmvb
天赐第2季05.rmvb
影视帝国(bbs.cnxp.com).美丽心灵.A.Beautiful.Mind.2001.CD1.rmvb
( ... 太多了,不要全输出来吧~~)

扩展
CookBook一书中,提供的是itertools.imap来实现对字符串的过滤。imap和map不同的是,imap返回的是一个iteration对象,而map返回的是一个list对象。代码如下:
import itertools
def anyTrue(predicate, sequence):
return True in itertools.imap(predicate, sequence)
def endsWith(s, *endings):
return anyTrue(s.endswith, endings)
imap 等价于:
def imap(function, *iterables):
iterables = map(iter, iterables)
while True:
args = [i.next() for i in iterables]
if function is None:
yield tuple(args)
else:
yield function(*args)

Python 相关文章推荐
跟老齐学Python之关于循环的小伎俩
Oct 02 Python
使用Python下的XSLT API进行web开发的简单教程
Apr 15 Python
详解python中字典的循环遍历的两种方式
Feb 07 Python
Python之日期与时间处理模块(date和datetime)
Feb 16 Python
浅谈django的render函数的参数问题
Oct 16 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
详解python实现小波变换的一个简单例子
Jul 18 Python
Django框架之中间件MiddleWare的实现
Dec 30 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
Feb 15 Python
python生成xml时规定dtd实例方法
Sep 21 Python
python unittest单元测试的步骤分析
Aug 02 Python
Python 恐龙跑跑小游戏实现流程
Feb 15 Python
比较详细Python正则表达式操作指南(re使用)
Sep 06 #Python
Python splitlines使用技巧
Sep 06 #Python
Python struct.unpack
Sep 06 #Python
Python 条件判断的缩写方法
Sep 06 #Python
Python 可爱的大小写
Sep 06 #Python
Python 除法小技巧
Sep 06 #Python
Python translator使用实例
Sep 06 #Python
You might like
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
简单的代码实现jquery定时器
2014/01/03 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
2016/12/18 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
带你使用webpack快速构建web项目的方法
2020/11/12 Javascript
python计算文本文件行数的方法
2015/07/06 Python
使用python3.5仿微软记事本notepad
2016/06/15 Python
Python正则表达式教程之一:基础篇
2017/03/02 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
django rest framework 自定义返回方式
2020/07/12 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
What is view? why do we have view?
2012/06/22 面试题
小学生新学期寄语
2014/01/19 职场文书
房产委托公证书
2014/04/08 职场文书
安全标兵事迹材料
2014/08/17 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
导游词之山西关帝庙
2019/11/01 职场文书