Como posso verificar se o caractere em uma string é uma letra? (Pitão)

121

Eu sei sobre islowere isupper, mas você pode verificar se esse caractere é ou não uma carta? Por exemplo:

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

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

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

Existe alguma maneira de simplesmente perguntar se é um personagem além de fazer .islower()ou .isupper()?

O.rka
fonte
2
Observe que "caractere de palavra" na programação geralmente se refere a letras, números e sublinhados. Esta questão está realmente perguntando sobre "cartas"; se você precisa ver se um caractere é um caractere de palavra, a melhor maneira que encontrei é character.isalnum() or character == "_".
Variadismo
Eu sei, mas eu perguntei isso há 3 anos, quando comecei a programar. Sinta-se à vontade para editá-lo.
O.rka
Justo. Todos nós já passamos por isso. Vou solicitar uma edição.
Variadicismo de

Respostas:

190

Você pode usar str.isalpha().

Por exemplo:

s = 'a123b'

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

Resultado:

a True
1 False
2 False
3 False
b True
Rainer
fonte
9
observe que é tão bom que funciona para vários alfabetos também: >>> print [x.isalpha() for x in u'Español-한국어']dá a você [Verdadeiro, Verdadeiro, Verdadeiro, Verdadeiro, Verdadeiro, Verdadeiro, Verdadeiro, Falso, Verdadeiro, Verdadeiro, Verdadeiro] como esperado
pryma
27
str.isalpha()

Retorna verdadeiro se todos os caracteres na string são alfabéticos e há pelo menos um caractere, caso contrário, retorna falso. Caracteres alfabéticos são aqueles definidos no banco de dados de caracteres Unicode como “Letra”, ou seja, aqueles com propriedade de categoria geral sendo “Lm”, “Lt”, “Lu”, “Ll” ou “Lo”. Observe que isso é diferente da propriedade “Alfabética” definida no Padrão Unicode.

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

Em python3.x:

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

Este código funciona:

>>> 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
fonte
4

Descobri uma boa maneira de fazer isso usando uma função e um código básico. Este é um código que aceita uma string e conta o número de letras maiúsculas, letras minúsculas e também 'outras'. Outro é classificado como espaço, sinal de pontuação ou mesmo caracteres japoneses e chineses.

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
fonte
str.isalphaé muito mais fácil 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)

Resultado:

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

Ao usar str.isalpha()você pode verificar se é uma carta.

Chandan Sharma
fonte
0

Isso funciona:

any(c.isalpha() for c in 'string')
amalik2205
fonte
-2

Isso funciona:

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
fonte
em vez disso, use ==, se a for falso
Legolas Bloom