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()?

O.rka
la source
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
Rainer
la source
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)
>>>
Legolas Bloom
la source
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.")
MII
la source
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.

Chandan Sharma
la source
0

Cela marche:

any(c.isalpha() for c in 'string')
amalik2205
la source
-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.")
omry
la source
utiliser est à la place ==, si a est faux
Legolas Bloom