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中关键字is与==的区别简述
Jul 31 Python
Python实现的数据结构与算法之基本搜索详解
Apr 22 Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 Python
如何利用python制作时间戳转换工具详解
Sep 12 Python
python同时遍历数组的索引和值的实例
Nov 15 Python
浅谈python的深浅拷贝以及fromkeys的用法
Mar 08 Python
python实现维吉尼亚加密法
Mar 20 Python
Django 源码WSGI剖析过程详解
Aug 05 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
Jan 14 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
Oct 15 Python
Python实现文本文件拆分写入到多个文本文件的方法
Apr 18 Python
C站最全Python标准库总结,你想要的都在这里
Jul 03 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一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
PHP自定义多进制的方法
2016/11/03 PHP
PHP编译configure时常见错误的总结
2017/08/17 PHP
php支付宝APP支付功能
2020/07/29 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
jQuery中odd选择器的定义和用法
2014/12/23 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
[13:55]Newbee vs Team Spirit
2018/06/07 DOTA
Python脚本实现12306火车票查询系统
2016/09/30 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
英国儿童设计师服装的领先零售商:Base
2019/03/17 全球购物
Linux的文件类型
2012/03/07 面试题
某同学的自我鉴定范文
2013/12/26 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
庆六一活动总结
2014/08/29 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
社区低保工作总结2015
2015/07/23 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript