** 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: p>
3 Réponses :
Si vous testez juste la fin de la chaîne, rappelez-vous que str.endswith peut accepter un tuple. 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')
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
Essayez: qui est fondamentalement identique à votre code, mais plus élégamment écrit. P> p>
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
Cela ne fonctionne pas - le 'jpg' ou 'png' ou ... code> évalue vers true code>, qui est ensuite annulé - vous testez la présence de FALSE code> dans la chaîne.
Que reste i> ne fonctionnera pas: le ou code> convertit également les chaînes en booléens; Vous testez maintenant simplement pour true code> dans la chaîne.
Dupliqué possible de Vérifiez si plusieurs chaînes existent dans une autre chaîne