Comment puis-je vérifier si le caractère d'une chaîne est une lettre? (Python)


122

Je connais isloweret isupper, mais pouvez-vous vérifier si ce caractère est ou non une lettre? Par exemple:

>>> s = 'abcdefg'
>>> s2 = '123abcd'
>>> s3 = 'abcDEFG'
>>> s[0].islower()
True

>>> s2[0].islower()
False

>>> s3[0].islower()
True

Existe-t-il un moyen de demander simplement si c'est un personnage en plus de faire .islower()ou .isupper()?


2
Veuillez noter que le «caractère de mot» dans la programmation fait généralement référence aux lettres, aux chiffres et aux traits de soulignement. Cette question concerne en fait les «lettres»; si vous avez besoin de voir si un caractère est un caractère de mot, le meilleur moyen que j'ai trouvé est character.isalnum() or character == "_".
Variadicism

Je sais mais j'ai posé la question il y a 3 ans quand j'ai commencé la programmation. N'hésitez pas à le modifier.
O.rka

C'est suffisant. Nous y avons tous été. Je vais demander une modification.
Variadicism

Réponses:


191

Vous pouvez utiliser str.isalpha().

Par exemple:

s = 'a123b'

for char in s:
    print(char, char.isalpha())

Production:

a True
1 False
2 False
3 False
b True

9
s'il vous plaît noter, il est tellement bon que cela fonctionne aussi pour divers alphabets: >>> print [x.isalpha() for x in u'Español-한국어']vous donne [True, True, True, True, True, True, True, False, True, True, True] comme prévu
pryma

27
str.isalpha()

Renvoie true si tous les caractères de la chaîne sont alphabétiques et qu'il y a au moins un caractère, false dans le cas contraire. Les caractères alphabétiques sont les caractères définis dans la base de données de caractères Unicode comme «Lettre», c'est-à-dire ceux dont la propriété de catégorie générale est l'un des «Lm», «Lt», «Lu», «Ll» ou «Lo». Notez que ceci est différent de la propriété «Alphabétique» définie dans la norme Unicode.

Dans python2.x:

>>> s = u'a1中文'
>>> for char in s: print char, char.isalpha()
...
a True
1 False
 True
 True
>>> s = 'a1中文'
>>> for char in s: print char, char.isalpha()
...
a True
1 False
 False
 False
 False
 False
 False
 False
>>>

Dans python3.x:

>>> s = 'a1中文'
>>> for char in s: print(char, char.isalpha())
...
a True
1 False
 True
 True
>>>

Ce code fonctionne:

>>> def is_alpha(word):
...     try:
...         return word.encode('ascii').isalpha()
...     except:
...         return False
...
>>> is_alpha('中国')
False
>>> is_alpha(u'中国')
False
>>>

>>> a = 'a'
>>> b = 'a'
>>> ord(a), ord(b)
(65345, 97)
>>> a.isalpha(), b.isalpha()
(True, True)
>>> is_alpha(a), is_alpha(b)
(False, True)
>>>

4

J'ai trouvé un bon moyen de le faire en utilisant une fonction et un code de base. C'est un code qui accepte une chaîne et compte le nombre de lettres majuscules, minuscules et aussi «autre». Autre est classé comme un espace, un signe de ponctuation ou même des caractères japonais et chinois.

def check(count):

    lowercase = 0
    uppercase = 0
    other = 0

    low = 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'
    upper = 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'



    for n in count:
        if n in low:
            lowercase += 1
        elif n in upper:
            uppercase += 1
        else:
            other += 1

    print("There are " + str(lowercase) + " lowercase letters.")
    print("There are " + str(uppercase) + " uppercase letters.")
    print("There are " + str(other) + " other elements to this sentence.")

str.isalphac'est beaucoup plus facile que '
Aryan Beezadhur

1

data = "abcdefg hi j 12345"

digits_count = 0
letters_count = 0
others_count = 0

for i in userinput:

    if i.isdigit():
        digits_count += 1 
    elif i.isalpha():
        letters_count += 1
    else:
        others_count += 1

print("Result:")        
print("Letters=", letters_count)
print("Digits=", digits_count)

Production:

Please Enter Letters with Numbers:
abcdefg hi j 12345
Result:
Letters = 10
Digits = 5

En utilisant, str.isalpha()vous pouvez vérifier s'il s'agit d'une lettre.



-2

Cela marche:

word = str(input("Enter string:"))
notChar = 0
isChar = 0
for char in word:
    if not char.isalpha():
        notChar += 1
    else:
        isChar += 1
print(isChar, " were letters; ", notChar, " were not letters.")

utiliser est à la place ==, si a est faux
Legolas Bloom
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.