7
votes

Vérifiez que une chaîne ne contient pas de valeurs multiples

** NOTE- Je ne vais pas simplement tester à la fin d'une chaîne-- besoin de localiser des substrings particulières n'importe où dans la chaîne

Quel est le moyen le plus rapide de vérifier que une chaîne ne contient pas de valeurs multiples . Ma méthode actuelle est inefficace et incimtthonique: xxx


3 Réponses :


7
votes

Si vous testez juste la fin de la chaîne, rappelez-vous que str.endswith peut accepter un tuple. XXX PRE>

Sinon: P>

>>> import re
>>> re.compile('jpg|png|gif').search('testpng.txt')
<_sre.SRE_Match object at 0xb74a46e8>
>>> re.compile('jpg|png|gif').search('testpg.txt')


2 commentaires

Non seulement tester la fin d'une chaîne :-( besoin de détecter si ces sous-chaînes apparaissent n'importe où.


OK, alors une regex est probablement meilleure; va modifier la réponse



15
votes

Essayez: xxx

qui est fondamentalement identique à votre code, mais plus élégamment écrit.


0 commentaires

-4
votes

Vous pouvez également faire quelque chose comme celui-ci si les valeurs à tester pour ne pas avoir besoin d'être gérées par une tuple / liste.

>>> ('bees' or 'png' or 'jpg' or 'foo') in 'testpng.txt'
False


2 commentaires

Cela ne fonctionne pas - le 'jpg' ou 'png' ou ... évalue vers true , qui est ensuite annulé - vous testez la présence de FALSE dans la chaîne.


Que reste ne fonctionnera pas: le ou convertit également les chaînes en booléens; Vous testez maintenant simplement pour true dans la chaîne.