Quelle est la meilleure implémentation pure en Python pour vérifier si une chaîne contient N'IMPORTE QUELLE lettre de l'alphabet?
string_1 = "(555).555-5555"
string_2 = "(555) 555 - 5555 ext. 5555
Où string_1
retournera False
sans aucune lettre de l'alphabet et string_2
renverra True
pour avoir une lettre.
Regex devrait être une approche rapide:
re.search('[a-zA-Z]', the_string)
Que diriez-vous:
>>> string_1 = "(555).555-5555"
>>> string_2 = "(555) 555 - 5555 ext. 5555"
>>> any(c.isalpha() for c in string_1)
False
>>> any(c.isalpha() for c in string_2)
True
Vous pouvez utiliser islower()
sur votre chaîne pour voir si elle contient des lettres minuscules (parmi d'autres caractères). or
avec isupper()
pour vérifier également si contient des lettres majuscules:
ci-dessous: lettres dans la chaîne: test renvoie true
>>> z = "(555) 555 - 5555 ext. 5555"
>>> z.isupper() or z.islower()
True
ci-dessous: pas de lettres dans la chaîne: test renvoie false.
>>> z= "(555).555-5555"
>>> z.isupper() or z.islower()
False
>>>
Ne pas confondre avec isalpha()
qui renvoie True
uniquement si tous les caractères sont des lettres, ce qui n'est pas ce que vous voulez.
Notez que Barm - answer complète bien le mien, car le mien ne gère pas bien le cas mélangé.
Vous pouvez utiliser une expression régulière comme ceci:
import re
print re.search('[a-zA-Z]+',string)
J'ai aimé la réponse fournie par @ jean-françois-fabre , mais elle est incomplète.
Son approche fonctionnera, mais seulement si le texte contient uniquement des lettres minuscules ou majuscules:
>>> text = "(555).555-5555 extA. 5555"
>>> text.islower()
False
>>> text.isupper()
False
La meilleure approche consiste à commencer par majuscule ou minuscule, puis par vérifier.
>>> string1 = "(555).555-5555 extA. 5555"
>>> string2 = '555 (234) - 123.32 21'
>>> string1.upper().isupper()
True
>>> string2.upper().isupper()
False
Vous pouvez aussi le faire en plus
import re
string='24234ww'
val = re.search('[a-zA-Z]+',string)
val[0].isalpha() # returns True if the variable is an alphabet
print(val[0]) # this will print the first instance of the matching value
Notez également que si variable val ne renvoie aucun. Cela signifie que la recherche n'a pas trouvé de correspondance