0
votes

Expression régulière pour des modèles simples

Problème

J'ai un jeu de données d'image décrivant différentes activités apparaissant dans les images particulières. Chaque image du jeu de données est nommée sous la forme _ . Par exemple, Education_13.jpg , pratiquant_147.jpg , etc.

maintenant je souhaite sélectionner des images avec la même activité, disons "Cuisson" et J'ai décidé de faire cela en utilisant le module re en python. Le script que j'ai écrit est comme xxx

Cependant, même si de nombreuses images sont traitées avec succès. Il a finalement été avorté avec attributeError . Il semble que certaines des images ne soient pas assorties avec le motif spécifié.

Donc, je fais une erreur? Toute entrée est appréciée.

EDIT:

En utilisant un mécanisme d'exception en Python, il s'avère que sur près de 150 000 images, il existe un fichier texte appelé temp.txt et c'est celui qui viole le motif.


2 commentaires

Pouvez-vous ajouter impression (nom de fichier) comme 1ère ligne à l'intérieur de votre boucle, puis lancez votre script et écrivez ce qui est le dernier nom de fichier qui a été imprimé avant l'erreur? De cette façon, nous saurions quel nom de fichier est problématique exactement.


En haut de la tête, devinez: . et .. . Mais pourquoi demander ici? Vérifiez simplement le retour de re.match et imprimez la valeur incriminée si elle est Aucun .


3 Réponses :


3
votes

sans utiliser regex. Utilisation de str.split

ex: xxx


0 commentaires

1
votes

re.match (motif, racine) ne peut renvoyer aucune si ce n'est pas correspondant à

  1. Vous pouvez vérifier le résultat de re.match (motif, root) == Aucun et trouver l'image
  2. Utilisez https://regex101.com/ pour vérifier votre REGEXP avec le nom des images

0 commentaires

1
votes

Si re.match (motif, racine) n'est pas alors appelant .group (1) vous donnera l'erreur d'attribut. Donc, dans certains cas, vous ne semblez pas correspondre à toutes les entrées de votre annuaire.

Il est difficile de savoir quelles vous donnent des problèmes, mais par défaut \ w correspond uniquement [a-za-z0-9 _] , donc:

  • Tous les fichiers contiennent des caractères de ponctuation (par exemple%)?
  • Tous les fichiers contiennent des caractères non-ASCII (par exemple, Ñ)?
  • Y a-t-il des fichiers non liés au jeu de données dans le répertoire?

    Vous pouvez afficher la liste des répertoires, puis peut-être que nous pouvons repérer le fichier.


0 commentaires