ホームページ  >  記事  >  バックエンド開発  >  文字列をフィルタリングするための Python のヒント

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

巴扎黑
巴扎黑オリジナル
2017-05-21 18:52:212876ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。