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使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
github配置使用指南
Nov 18 Python
Python标准库urllib2的一些使用细节总结
Mar 16 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
matplotlib subplots 设置总图的标题方法
May 25 Python
Python后台开发Django的教程详解(启动)
Apr 08 Python
Python pip替换为阿里源的方法步骤
Jul 02 Python
Flask-WTF表单的使用方法
Jul 12 Python
python之PyQt按钮右键菜单功能的实现代码
Aug 17 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
Aug 19 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/10/09 PHP
php下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
php 过滤危险html代码
2009/06/29 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
javascript实现禁止复制网页内容
2014/12/16 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
Python完全新手教程
2007/02/08 Python
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
二年级语文教学反思
2014/02/02 职场文书
企业宣传方案
2014/03/04 职场文书
作文评语集锦大全
2014/04/23 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
寒山寺导游词
2015/02/03 职场文书
公司年夜饭通知
2015/04/25 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
小学运动会入场词
2015/07/18 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书
大学生社会服务心得体会
2016/01/22 职场文书