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中用Descriptor实现类级属性(Property)详解
Sep 18 Python
使用Python编写vim插件的简单示例
Apr 17 Python
Python循环语句中else的用法总结
Sep 11 Python
Python3.X 线程中信号量的使用方法示例
Jul 24 Python
python递归函数绘制分形树的方法
Jun 22 Python
python tkinter界面居中显示的方法
Oct 11 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
python如何制作缩略图
Apr 30 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
python set内置函数的具体使用
Jul 02 Python
Python基于requests实现模拟上传文件
Apr 21 Python
keras用auc做metrics以及早停实例
Jul 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
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
2019/01/28 PHP
JavaScript中的undefined学习总结
2013/11/30 Javascript
jquery.cookie用法详细解析
2013/12/18 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
2017/04/22 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
Python常用小技巧总结
2015/06/01 Python
Python requests发送post请求的一些疑点
2018/05/20 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
python版本五子棋的实现代码
2018/12/11 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
如何运行带参数的python脚本
2019/11/15 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
Ajax的优点和缺点
2014/11/21 面试题
高中同学聚会邀请函
2014/01/11 职场文书
小学开学典礼主持词
2014/03/19 职场文书
关于安全的标语
2014/06/10 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
运动会加油稿30字
2015/07/21 职场文书
2015中学教师个人工作总结
2015/07/22 职场文书
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏
Django框架中视图的用法
2022/06/10 Python