expression régulière de l'utilisation de glob.glob pour python
import glob
list = glob.glob(r'*abc*.txt') + glob.glob(r'*123*.txt') + glob.glob(r'*a1b*.txt')
for i in list:
print i
Ce code fonctionne à la liste des fichiers dans le dossier en cours qui ont 'abc', '123' ou 'a1b" dans leurs noms.
Comment puis-je utiliser un glob pour remplir cette fonction? Merci!
- "comment"? quoi comment?
- Je ne pense pas que vous le pouvez. python glob ne prend pas en charge
{}
et je pense que c'est à peu près la seule façon de le faire.
Vous devez vous connecter pour publier un commentaire.
Le plus simple serait de filtrer le glob résultats vous-même. Voici comment le faire en utilisant une boucle simple de compréhension:
Vous pouvez également utiliser une regexp et pas de
glob
:(Par la façon dont, en nommant une variable
list
est une mauvaise idée carlist
est un Python de type...)or
au lieu deand
, n'est-ce pas ?or
serait un meilleur choix. Merci pour cette remarque.or
ici 🙂 désolé pour mon mauvais anglais..Ici est un prêt à utiliser la voie de faire ceci sur la base d'autres réponses. C'est pas le plus critique pour les performances, mais il fonctionne comme décrit;
match
complètement correspondre les noms. Downvoting.Je suis surpris que pas de réponses ici, filtre utilisé.
Ce accepte tout itérateur qui renvoie des chaînes, y compris les listes, les tuples, les dicts(si toutes les clés sont des chaînes de caractères), etc. Si vous voulez soutenir les correspondances partielles, vous pouvez changer
.match
à.search
. Veuillez noter que, de toute évidence, cela renvoie d'un générateur, de sorte que si vous souhaitez utiliser les résultats sans itération sur eux, vous pouvez convertir le résultat une liste vous-même, ou de la pellicule de l'instruction de retour avec la liste(...).