Python天天美味(16) - 过滤字符串的技巧,map与itertools.imap
生活随笔
收集整理的這篇文章主要介紹了
Python天天美味(16) - 过滤字符串的技巧,map与itertools.imap
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python中的map函數非常有用,在字符轉換和字符遍歷兩節都出現過,現在,它又出現了,會給我們帶來什么樣的驚喜呢?是不是要告訴我們,map是非常棒的,以后要多找它玩呢?
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
( ... 太多了,不要全輸出來吧~~)
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)
具體的實例
我們需要在目錄中遍歷,包括子目錄(哈哈),找出所有后綴為: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,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的Python天天美味(16) - 过滤字符串的技巧,map与itertools.imap的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: h5原生audio播放amr格式的音频
- 下一篇: Flexsim