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 相关文章推荐
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
浅谈numpy库的常用基本操作方法
Jan 09 Python
python selenium 对浏览器标签页进行关闭和切换的方法
May 21 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
python 实现在tkinter中动态显示label图片的方法
Jun 13 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
Aug 12 Python
python hashlib加密实现代码
Oct 17 Python
Python hashlib加密模块常用方法解析
Dec 18 Python
Django数据结果集序列化并展示实现过程
Apr 22 Python
python实现单机五子棋
Aug 28 Python
python 进阶学习之python装饰器小结
Sep 04 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
让你的网站首页自动选择语言转跳
2006/12/06 PHP
php5.5新数组函数array_column使用
2013/07/08 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
yii使用activeFileField控件实现上传文件与图片的方法
2015/12/28 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
javascript GUID生成器实现代码
2009/10/31 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
js鼠标移动时禁止选中文字
2017/02/19 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
Python中使用asyncio 封装文件读写
2016/09/11 Python
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
Python  Django 母版和继承解析
2019/08/09 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
2019/09/25 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
建筑结构施工专业推荐信
2014/02/21 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
心灵点滴观后感
2015/06/02 职场文书
python实现自定义日志的具体方法
2021/05/28 Python