文字列をフィルタリングするための Python のヒント

巴扎黑
リリース: 2017-05-21 18:52:21
オリジナル
2880 人が閲覧しました

Python のマップ関数は、文字変換セクションと文字トラバース セクションの両方で登場しましたが、今度はどのような驚きをもたらすのでしょうか。マップは素晴らしいので、将来的にはもっとプレイする必要があると言いたいのでしょうか?

具体的な例
サブディレクトリ (笑) を含むディレクトリを走査し、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] Lost Season 4 04.rmvb
[ロスト シーズン 4].Lost.S04E00.rmvb
[ロスト シーズン 4][エピソード 02][中国語字幕].rmvb
「ロスト シーズン 4」エピソード 05 [中国語字幕].rmvb
「ロスト シーズン 4」[エピソード 02][中国語字幕]シーズン 4」エピソード 06 [中国語字幕].rmvb
「ロスト シーズン 4」エピソード 07 [中国語字幕].rmvb
ゴッドセンド シーズン 2 01.rmvb
ゴッドセンド シーズン 2 02.rmvb
ゴッドセンド シーズン 2 03.rmvb
ゴッドセンド シーズン 2 04.rmvb
Godsend Season 2 05.rmvb
Beautiful Mind (bbs.cnxp.com).A.Beautiful.Mind. 2001.CD1.rmvb
(...多すぎるので、全部出力しないでください~~)


拡張機能
CookBook は、文字列をフィルタリングするための itertools.imap を提供します。 imap と map の違いは、imap は反復オブジェクトを返すのに対し、map はリスト オブジェクトを返すことです。コードは次のとおりです:

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 のヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート