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
35
demandé sur Martin Thoma 2013-09-07 02:17:48

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
66
répondu Martijn Pieters 2013-09-06 22:29:51

str.isalpha() la fonction fonctionne. IE.

if my_string.isalpha():
    print('it is letters')
13
répondu cmd 2013-09-06 22:21:28

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
7
répondu Martin Thoma 2015-03-20 13:25:02

string.isalpha() la fonction fonctionnera pour vous.

voir http://www.tutorialspoint.com/python/string_isalpha.htm

6
répondu Amilcar Andrade 2013-09-06 22:24:29

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)
5
répondu hlin117 2015-12-18 19:52:58

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.

4
répondu kravietz 2017-06-13 12:04:22

(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.

1
répondu Hemin Patel 2018-01-02 06:50:00
func only_letters(str):
    return not any(str.isdigit(c) for c in str)
0
répondu Michael Dorner 2017-04-23 21:24:20

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.

-1
répondu The SuperCuber 2015-11-12 14:45:27