Python天天美味(16) - 过滤字符串的技巧,map与itertools.imap
具体的实例
我们需要在目录中遍历,包括子目录(哈哈),找出所有后缀为:rmvb ,avi ,pmp 的文件。(天哪?!你要干什么?这可是我的隐私啊~~)
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)
输出结果
来看看有什么好东东:
[迷失.第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对象。代码如下:
def anyTrue(predicate, sequence):
return True in itertools.imap(predicate, sequence)
def endsWith(s, *endings):
return anyTrue(s.endswith, endings)
imap 等价于:
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 天天美味(14) - splitlines
Python 天天美味(15) - Python正则表达式操作指南(re使用)(转)
Python 天天美味(16) - 过滤字符串的技巧,map与itertools.imap
Python 天天美味(17) - open读写文件
Python 天天美味(18) - linecache.getline()读取文件中特定一行
...
本文转自CoderZh博客园博客,原文链接:http://www.cnblogs.com/coderzh/archive/2008/05/09/1190173.html,如需转载请自行联系原作者
Python天天美味(16) - 过滤字符串的技巧,map与itertools.imap相关推荐
- Python天天美味(17) - open读写文件
Python中文件操作可以通过open函数,这的确很像C语言中的fopen.通过open函数获取一个file object,然后调用read(),write()等方法对文件进行读写操作. 1.open ...
- Python天天美味(5) - ljust rjust center
Python中打印字符串时可以调用ljust(左对齐),rjust(右对齐),center(中间对齐)来输出整齐美观的字符串,使用起来非常简单,包括使用第二个参数填充(默认为空格).看下面的例子就会明 ...
- Python天天美味(25) - 深入理解yield
yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法.只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子: def addlist( ...
- Python天天美味(35) - 细品lambda
lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x): return x**2 print f(4) Python中使用lambda的话,写成这样 g ...
- Python天天美味(28) - urlopen
一.打开一个网页获取所有的内容 from urllib import urlopen doc = urlopen("http://www.baidu.com").read() p ...
- Python天天美味(22) - 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deep ...
- Python天天美味(32) - python数据结构与算法之堆排序
1. 选择排序 选择排序原理是先选出最小的数,与第一个数交换,然后从第二个数开始再选择最小的数与第二个数交换,-- def selection_sort(data): for i in ran ...
- Python天天美味(21) - httplib,smtplib
例一:使用httplib访问某个url然后获取返回的内容: import httplib conn=httplib.HTTPConnection("www.cnblogs.com" ...
- Python天天美味(23) - enumerate遍历数组
其他语言中,比如C#,我们通常遍历数组是的方法是: for (int i = 0; i < list.Length; i++) { //todo with list[i] } 在Pyth ...
最新文章
- 神经网络模拟条件反射
- HttpURLConnection总结
- 2019ICPC(上海) - Spanning Tree Removal(构造)
- android 自定义loading,android_自定义Loading框
- mybatis-plus 查询,删除
- 修改DNS的Linux脚本,Shell脚本-配置网络
- 仰望星空后,更将脚踏实地!
- linux中gedit中定义变量,linux中的gedit
- 【华为云技术分享】漫谈LiteOS-端云互通组件-MQTT开发指南(上)
- Android 系统(165)---在apns-conf文件中配置一个read_only字段,使APN不可被编辑
- layui可以动态添加div吗_乳化剂是什么?可以添加到护肤品里吗?
- bootstrap带图标的按钮与图标做连接
- [zz] 海洋环境的光能传递
- 2020年5月全国县以上行政区划代码、城市经纬度查询、国内地区经度纬度查询工具
- pandas已知数值怎么找位置_pandas.dataframe中根据条件获取元素所在的位置方法(索引)...
- (13.1.1)PMBOK之一:运营,项目、项目集、项目组合、组织战略及其管理
- 模拟量输出模块支持西门子三菱PLC接DCS控制系统
- 消费税简介、消费税税目 、消费税税率 、消费税计算、综合练习
- 网络速率方面的知识(Kbps Mbps KB/s Mb/s Kb/s等)
- VS2022 与 C语言:初学者