Conseils Python pour filtrer les chaînes

巴扎黑
Libérer: 2017-05-21 18:52:21
original
2898 Les gens l'ont consulté

La fonction map en Python est très utile. Elle est apparue à la fois dans les sections de conversion de caractères et de traversée de caractères. Maintenant, elle réapparaît. Quel genre de surprises va-t-elle nous apporter ? Essayez-vous de nous dire que la carte est géniale et que nous devrions jouer davantage avec elle à l'avenir ?

Exemple spécifique
Nous devons parcourir le répertoire, y compris les sous-répertoires (haha), et trouver tous les fichiers avec le suffixe : rmvb, avi, pmp. (Oh mon Dieu ?! Que fais-tu ? C'est ma vie privée~~)

Le code est le suivant :

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)
Copier après la connexion

Résultats de sortie
Voyons ce qui se passe bon Dongdong :
[66影视www.66ys.cn] Lost Saison 4 04.rmvb
[Lost.Saison 4].Lost.S04E00.rmvb
[Lost Saison 4][Saison 4] Épisode 02 ] [Sous-titres chinois].rmvb
"Lost Saison 4" Épisode 05 [Sous-titres chinois].rmvb
"Lost Saison 4" Épisode 06 [Sous-titres chinois].rmvb
"Lost Saison 4" Épisode 07 [ Chinese subtitles].rmvb
Godsend Saison 2 01.rmvb
Godsend Saison 2 02.rmvb
Godsend Saison 2 03.rmvb
Godsend Saison 2 04.rmvb
Godsend Saison 2 05.rmvb
Empire du cinéma et de la télévision (bbs.cnxp.com).A.Beautiful.Mind.2001.CD1.rmvb
( ... Il y en a trop, ne les diffusez pas tous ~~)


Extensions
CookBook fournit itertools.imap pour filtrer les chaînes. La différence entre imap et map est que imap renvoie un objet itération, tandis que map renvoie un objet liste. Le code est le suivant :

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)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal