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统计cpu利用率的方法
Jun 02 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
简单掌握Python中glob模块查找文件路径的用法
Jul 05 Python
Python工厂函数用法实例分析
May 14 Python
在Pycharm中对代码进行注释和缩进的方法详解
Jan 20 Python
Python获取Redis所有Key以及内容的方法
Feb 19 Python
python滑块验证码的破解实现
Nov 10 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
python常用运维脚本实例小结
Feb 14 Python
python实现全排列代码(回溯、深度优先搜索)
Feb 26 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
七个Python必备的GUI库
Apr 27 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
粗略计算在线时间,bug:ip相同
2006/12/09 PHP
Phpbean路由转发的php代码
2008/01/10 PHP
PHP number_format() 函数定义和用法
2012/06/01 PHP
php中最简单的字符串匹配算法
2014/12/16 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
SVM基本概念及Python实现代码
2017/12/27 Python
django-allauth入门学习和使用详解
2019/07/03 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
Uber Eats台湾:寻找附近提供送餐服务的餐厅
2018/05/07 全球购物
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
化工工艺专业求职信
2013/09/22 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
公司离职证明标准格式
2014/11/18 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
大学生读书笔记大全
2015/07/01 职场文书
清明扫墓感想
2015/08/11 职场文书
2019年员工晋升管理制度范本!
2019/07/08 职场文书
Django框架中表单的用法
2022/06/10 Python