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实现在Linux系统下更改当前进程运行用户
Feb 04 Python
Python基于Tkinter的HelloWorld入门实例
Jun 17 Python
简单解析Django框架中的表单验证
Jul 17 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
May 28 Python
pygame加载中文名mp3文件出现error
Mar 31 Python
使用Python更换外网IP的方法
Jul 09 Python
pycharm运行出现ImportError:No module named的解决方法
Oct 13 Python
python 检查文件mime类型的方法
Dec 08 Python
Pandas 缺失数据处理的实现
Nov 04 Python
Python实现AI自动抠图实例解析
Mar 05 Python
Python 如何调试程序崩溃错误
Aug 03 Python
python爬虫beautifulsoup解析html方法
Dec 07 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
用header 发送cookie的php代码
2007/03/16 PHP
smarty section简介与用法分析
2008/10/03 PHP
PHP的变量总结 新手推荐
2011/04/18 PHP
PHP中几个常用的魔术常量
2012/02/23 PHP
解析csv数据导入mysql的方法
2013/07/01 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
JS 控制小数位数的实现代码
2011/08/02 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
js数组如何添加json数据及js数组与json的区别
2015/10/27 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
js案例之鼠标跟随jquery版(实例讲解)
2017/07/21 jQuery
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
Python设计模式之代理模式实例
2014/04/26 Python
python中lambda与def用法对比实例分析
2015/04/30 Python
python正则表达式之作业计算器
2016/03/18 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
python实现四人制扑克牌游戏
2020/04/22 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
采购员岗位职责
2013/11/15 职场文书
物业管理专业个人的自我评价
2013/11/19 职场文书
成品仓管员工作职责
2013/12/29 职场文书
员工培训邀请函
2014/02/02 职场文书
个人近期表现材料
2014/02/11 职场文书
2015年电话销售工作总结范文
2015/04/20 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
七年级思品教学反思
2016/02/20 职场文书
python_tkinter事件类型详情
2022/03/20 Python