web-dev-qa-db-fra.com

Comment vérifier si le caractère d'une chaîne est une lettre? Python

Donc, je connais islower et isupper, mais je n'arrive pas à savoir si vous pouvez vérifier si ce caractère est ou non une lettre?

Example:

s = 'abcdefg'
s2 = '123abcd'
s3 = 'abcDEFG'

s[0].islower() = True
s2[0].islower()= False
s3[0].islower()=True

y a-t-il moyen de simplement demander s'il s'agit d'un personnage en plus de faire .islower () ou .isupper ()?

76
O.rka

Vous pouvez utiliser isalpha(), voir la documentation sous http://docs.python.org/2/library/stdtypes.html

Un exemple:

>>> s = "a123b"
>>> for char in s:
...     print char, char.isalpha()
... 
a True
1 False
2 False
3 False
b True
126
rainer
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 sinon. Les caractères alphabétiques sont les caractères définis dans la base de données de caractères Unicode par "Lettre", c'est-à-dire ceux dont la propriété de catégorie générale est "Lm", "Lt", "Lu", "Ll" ou "Lo". Notez que cette propriété est différente de la propriété "Alphabétique" définie dans la norme Unicode.

En 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
>>>

En 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)
>>>
19
Legolas Bloom

J'ai trouvé un bon moyen de faire cela en utilisant une fonction et un code de base. Il s'agit d'un code qui accepte une chaîne et compte le nombre de lettres majuscules, minuscules et autres. Autre est classé comme un espace, un signe de ponctuation et 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.")
3
MII

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)

Sortie::

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

En utilisant str.isalpha(), yoy peut vérifier s’il s’agit d’une lettre.

0
Chandan Sharma