¿Cómo puedo comprobar si el carácter de una cadena es una letra? (Pitón)


122

Conozco islowery isupper, pero ¿puedes comprobar si ese personaje es una letra o no? Por ejemplo:

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

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

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

¿Hay alguna forma de simplemente preguntar si es un personaje además de hacer .islower()o .isupper()?


2
Tenga en cuenta que "carácter de palabra" en la programación generalmente se refiere a letras, números y guiones bajos. En realidad, esta pregunta se refiere a "letras"; si necesita ver si un carácter es un carácter de palabra, la mejor forma que he encontrado es character.isalnum() or character == "_".
Variadicismo

Lo sé, pero pregunté esto hace como 3 años cuando comencé a programar. Siéntete libre de editarlo.
O.rka

Lo suficientemente justo. Todos hemos estado allí. Solicitaré una edición.
Variadicismo

Respuestas:


191

Puede utilizar str.isalpha().

Por ejemplo:

s = 'a123b'

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

Salida:

a True
1 False
2 False
3 False
b True

9
tenga en cuenta que es tan bueno que también funciona para varios alfabetos: >>> print [x.isalpha() for x in u'Español-한국어']le da [Verdadero, Verdadero, Verdadero, Verdadero, Verdadero, Verdadero, Verdadero, Falso, Verdadero, Verdadero, Verdadero] como se esperaba
pryma

27
str.isalpha()

Devuelve verdadero si todos los caracteres de la cadena son alfabéticos y hay al menos un carácter, falso en caso contrario. Los caracteres alfabéticos son aquellos definidos en la base de datos de caracteres Unicode como “Letra”, es decir, aquellos cuya propiedad de categoría general es “Lm”, “Lt”, “Lu”, “Ll” o “Lo”. Tenga en cuenta que esto es diferente de la propiedad "Alfabética" definida en el estándar 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
>>>

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

Encontré una buena manera de hacer esto usando una función y un código básico. Este es un código que acepta una cadena y cuenta el número de letras mayúsculas, minúsculas y también 'otros'. Otro se clasifica como un espacio, un signo de puntuación o incluso caracteres japoneses y chinos.

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.isalphaaunque es mucho más fácil '
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)

Salida:

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

Utilizando str.isalpha()puedes comprobar si es una letra.



-2

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

el uso es en su lugar ==, si a es falso
Legolas Bloom
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.