122 votes

Comment puis-je vérifier si une chaîne contient des lettres de l'alphabet ?

Quelle est la meilleure implémentation Python pure pour vérifier si une chaîne contient TOUTES les lettres de l'alphabet ?

 string_1 = "(555).555-5555"
string_2 = "(555) 555 - 5555 ext. 5555

string_1 renverrait False pour n'avoir aucune lettre de l'alphabet et string_2 renverrait True pour avoir une lettre.

160voto

JBernardo Points 14772

Regex devrait être une approche rapide :

 re.search('[a-zA-Z]', the_string)

111voto

DSM Points 71975

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

19voto

Barm Points 115

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 d'abord à mettre votre chaîne en majuscules ou en minuscules, puis à vérifier.

 >>> string1 = "(555).555-5555 extA. 5555"
>>> string2 = '555 (234) - 123.32   21'

>>> string1.upper().isupper()
True
>>> string2.upper().isupper()
False

11voto

shibly Points 2335

Vous pouvez utiliser une expression régulière comme celle-ci :

 import re

print re.search('[a-zA-Z]+',string)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X