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


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

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

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.")

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.



-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.")

em vez disso, use ==, se a for falso
Legolas Bloom
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.