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实现向QQ群成员自动发邮件的方法
Nov 19 Python
MySQL中表的复制以及大型数据表的备份教程
Nov 25 Python
Python 爬虫多线程详解及实例代码
Oct 08 Python
Python OpenCV获取视频的方法
Feb 28 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
Python用61行代码实现图片像素化的示例代码
Dec 10 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
pygame实现贪吃蛇游戏(上)
Oct 29 Python
python通过链接抓取网站详解
Nov 20 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
Python实现壁纸下载与轮换
Oct 19 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 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实现取得HTTP请求的原文
2014/08/18 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
python安装以及IDE的配置教程
2015/04/29 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
Python编程之string相关操作实例详解
2017/07/22 Python
python将list转为matrix的方法
2018/12/12 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
python yield关键词案例测试
2019/10/15 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
个人求职信范文分享
2014/01/06 职场文书
工作分析计划书
2014/04/30 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
大班下学期个人总结
2015/02/13 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
杨善洲电影观后感
2015/06/04 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书