Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Tipps zum Filtern von Strings

Python-Tipps zum Filtern von Strings

巴扎黑
巴扎黑Original
2017-05-21 18:52:212875Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn