Heim > Artikel > Backend-Entwicklung > Python-Tipps zum Filtern von Strings
Die Map-Funktion in Python ist sowohl in den Abschnitten zur Zeichenkonvertierung als auch zum Durchlaufen von Zeichen aufgetaucht. Welche Art von Überraschungen wird sie uns bringen? Wollen Sie uns sagen, dass die Karte großartig ist und wir in Zukunft mehr damit spielen sollten?
Spezifisches Beispiel
Wir müssen das Verzeichnis einschließlich der Unterverzeichnisse durchsuchen (haha) und alle Dateien mit dem Suffix finden: rmvb, avi, pmp. (Oh mein Gott?! Was machst du? Das ist meine Privatsphäre~~)
Der Code lautet wie folgt:
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)
Ergebnisse ausgeben
Mal sehen, was ist guter Dongdong:
[66影视www.66ys.cn] Lost Season 4 04.rmvb
[Lost. Season 4].Lost.S04E00.rmvb
[Lost Season 4][Season 4] Episode 02 ] [Chinesische Untertitel].rmvb
„Lost Season 4“ Episode 05 [Chinesische Untertitel].rmvb
„Lost Season 4“ Episode 06 [Chinesische Untertitel].rmvb
„Lost Season 4“ Episode 07 [ Chinesische Untertitel].rmvb
Godsend Staffel 2 01.rmvb
Godsend Staffel 2 02.rmvb
Godsend Staffel 2 03.rmvb
Godsend Staffel 2 04.rmvb
Godsend Staffel 2 05.rmvb
Film and Television Empire (bbs.cnxp.com).A.Beautiful.Mind.2001.CD1.rmvb
( ... Es gibt zu viele, geben Sie sie nicht alle aus~~)
Erweiterungen
CookBook stellt itertools.imap zum Filtern von Zeichenfolgen bereit. Der Unterschied zwischen IMAP und Map besteht darin, dass IMAP ein Iterationsobjekt zurückgibt, während Map ein Listenobjekt zurückgibt. Der Code lautet wie folgt:
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)
Das obige ist der detaillierte Inhalt vonPython-Tipps zum Filtern von Strings. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!