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

O.rka
fuente
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
lloviendo
fuente
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)
>>>
Legolas Bloom
fuente
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.")
MII
fuente
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.

Chandan Sharma
fuente
0

Esto funciona:

any(c.isalpha() for c in 'string')
amalik2205
fuente
-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.")
omry
fuente
el uso es en su lugar ==, si a es falso
Legolas Bloom