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中pygame安装方法图文详解
Nov 11 Python
Python去除、替换字符串空格的处理方法
Apr 01 Python
python中使用zip函数出现错误的原因
Sep 28 Python
pyttsx3实现中文文字转语音的方法
Dec 24 Python
python射线法判断检测点是否位于区域外接矩形内
Jun 28 Python
python求最大值,不使用内置函数的实现方法
Jul 09 Python
python实现的爬取电影下载链接功能示例
Aug 26 Python
Python通过递归获取目录下指定文件代码实例
Nov 07 Python
Python中如何将一个类方法变为多个方法
Dec 30 Python
pytorch实现特殊的Module--Sqeuential三种写法
Jan 15 Python
Python GUI库PyQt5图形和特效样式QSS介绍
Feb 25 Python
Python通过2种方法输出带颜色字体
Mar 02 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
Javascript操作表单实例讲解(下)
2016/06/20 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
Python性能优化技巧
2015/03/09 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
css3中transition属性详解
2014/09/02 HTML / CSS
Vans(范斯)德国官网:美国南加州的原创极限运动潮牌
2017/05/02 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
教师推荐信范文
2013/11/24 职场文书
大学军训自我鉴定
2013/12/15 职场文书
医院实习介绍信
2014/01/12 职场文书
高一物理教学反思
2014/01/24 职场文书
岗位职责说明书
2014/05/07 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
七一表彰大会简报
2015/07/20 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
2016年禁毒宣传活动总结
2016/04/05 职场文书
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android