Python天天美味(16) - 过滤字符串的技巧,map与itertools.imap

简介:
Python中的map函数非常有用,在字符转换和字符遍历两节都出现过,现在,它又出现了,会给我们带来什么样的惊喜呢?是不是要告诉我们,map是非常棒的,以后要多找它玩呢?

具体的实例

我们需要在目录中遍历,包括子目录(哈哈),找出所有后缀为: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 天天美味(14) - splitlines  

Python 天天美味(15) - Python正则表达式操作指南(re使用)(转)  

Python 天天美味(16) - 过滤字符串的技巧,map与itertools.imap  

Python 天天美味(17) - open读写文件  

Python 天天美味(18) - linecache.getline()读取文件中特定一行  

...



本文转自CoderZh博客园博客,原文链接:http://www.cnblogs.com/coderzh/archive/2008/05/09/1190173.html,如需转载请自行联系原作者

目录
相关文章
|
24天前
|
Python
Python中的f-string:更简洁的字符串格式化
Python中的f-string:更简洁的字符串格式化
193 92
|
1月前
|
索引 Python
python 字符串的所有基础知识
python 字符串的所有基础知识
176 0
|
1月前
|
Python
Python字符串center()方法详解 - 实现字符串居中对齐的完整指南
Python的`center()`方法用于将字符串居中,并通过指定宽度和填充字符美化输出格式,常用于文本对齐、标题及表格设计。
|
2月前
|
PHP Python
Python format()函数高级字符串格式化详解
在 Python 中,字符串格式化是一个重要的主题,format() 函数作为一种灵活且强大的字符串格式化方法,被广泛应用。format() 函数不仅能实现基本的插入变量,还支持更多高级的格式化功能,包括数字格式、对齐、填充、日期时间格式、嵌套字段等。 今天我们将深入解析 format() 函数的高级用法,帮助你在实际编程中更高效地处理字符串格式化。
240 0
|
3月前
|
Python
Python f-strings:让字符串格式化更简洁高效!
Python f-strings:让字符串格式化更简洁高效!
219 81
|
3月前
|
Python
Python字符串格式化利器:f-strings入门指南
Python字符串格式化利器:f-strings入门指南
189 80
|
3月前
|
Python
Python高效字符串格式化:f-strings的魅力
Python高效字符串格式化:f-strings的魅力
162 80
|
1月前
|
存储 小程序 索引
Python变量与基础数据类型:整型、浮点型和字符串操作全解析
在Python编程中,变量和数据类型是构建程序的基础。本文介绍了三种基本数据类型:整型(int)、浮点型(float)和字符串(str),以及它们在变量中的使用方式和常见操作。通过理解变量的动态特性、数据类型的转换与运算规则,初学者可以更高效地编写清晰、简洁的Python代码,为后续学习打下坚实基础。
247 0
|
3月前
|
Python
Python编程基石:整型、浮点、字符串与布尔值完全解读
本文介绍了Python中的四种基本数据类型:整型(int)、浮点型(float)、字符串(str)和布尔型(bool)。整型表示无大小限制的整数,支持各类运算;浮点型遵循IEEE 754标准,需注意精度问题;字符串是不可变序列,支持多种操作与方法;布尔型仅有True和False两个值,可与其他类型转换。掌握这些类型及其转换规则是Python编程的基础。
211 33

热门文章

最新文章

推荐镜像

更多