Comment puis-je vérifier si une chaîne de caractères ne contient que des lettres en Python?
j'essaie de vérifier si une chaîne ne contient que des lettres, pas des chiffres ou des symboles.
Par exemple:
>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
9 réponses
Simple:
if string.isalpha():
print("It's all letters")
str.isalpha()
n'est vrai que si les caractères dans la chaîne sont des lettres:
retourner true si tous les caractères de la chaîne sont alphabétiques et il y a au moins un caractère, false autrement.
Démo:
>>> 'hello'.isalpha()
True
>>> '42hello'.isalpha()
False
>>> 'hel lo'.isalpha()
False
str.isalpha()
la fonction fonctionne. IE.
if my_string.isalpha():
print('it is letters')
pour les personnes qui trouvent cette question via Google et qui pourraient vouloir savoir si une chaîne de caractères ne contient qu'un sous-ensemble de toutes les lettres, je recommande d'utiliser regexes:
import re
def only_letters(tested_string):
match = re.match("^[ABCDEFGHJKLM]*$", tested_string)
return match is not None
string.isalpha()
la fonction fonctionnera pour vous.
voir http://www.tutorialspoint.com/python/string_isalpha.htm
Ressemble les gens disent d'utiliser str.isalpha
.
c'est la fonction d'une ligne pour vérifier si tous les caractères sont des lettres.
def only_letters(string):
return all(letter.isalpha() for letter in string)
all
accepte un itérable de booléens, et renvoie True
iff tous les booléens sont True
.
Plus généralement, all
retourne True
si les objets de votre itérable seraient considérés True
. Serait considéré comme False
- 0
None
- Vide structures de données (c'est à dire:
len(list) == 0
) False
. (duh)
en fait, nous sommes maintenant dans le monde globalisé du 21ème siècle et les gens ne communiquent plus en utilisant L'ASCII seulement ainsi quand une question perverse sur "Est-ce des lettres seulement" vous devez tenir compte des lettres des alphabets non-ASCII aussi bien. Python a un assez cool unicodedata bibliothèque qui permet entre autres la catégorisation des caractères Unicode:
unicodedata.category('陳')
'Lo'
unicodedata.category('A')
'Lu'
unicodedata.category('1')
'Nd'
unicodedata.category('a')
'Ll'
catégories et de leurs abréviations sont définis dans la norme Unicode. De ici vous pouvez très facilement vous pouvez venir avec une fonction comme ceci:
def only_letters(s):
for c in s:
cat = unicodedata.category(c)
if cat not in ('Ll','Lu','Lo'):
return False
return True
puis:
only_letters('Bzdrężyło')
True
only_letters('He7lo')
False
comme vous pouvez le voir les catégories de liste blanche peuvent être assez facilement contrôlés par le tuple à l'intérieur de la fonction. Voir cet article pour une discussion plus détaillée.
(1) str.isalpha () lorsque vous imprimez la chaîne.
(2) s'il vous Plaît vérifier ci-dessous pour votre référence:-
str = "this"; # No space & digit in this string
print str.isalpha() # it gives return True
str = "this is 2";
print str.isalpha() # it gives return False
Remarque: j'ai vérifié l'exemple ci-dessus dans Ubuntu.
func only_letters(str):
return not any(str.isdigit(c) for c in str)
une solution assez simple que j'ai trouvé: (Python 3)
def only_letters(tested_string):
for letter in tested_string:
if not letter in "abcdefghjklmnopqrstuvwxyz":
return False
return True
Vous pouvez ajouter un espace dans la chaîne que vous vérifiez contre si vous voulez des espaces autorisés.