Hoe kan ik controleren of het teken in een tekenreeks een letter is? (Python)

Ik weet van isloweren isupper, maar kun je controleren of dat teken een letter is?
Bijvoorbeeld:

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

Is er een manier om gewoon te vragen of het een teken is, naast .islower()of .isupper()?


Antwoord 1, autoriteit 100%

Je kunt str.isalpha().

Bijvoorbeeld:

s = 'a123b'
for char in s:
    print(char, char.isalpha())

Uitvoer:

a True
1 False
2 False
3 False
b True

Antwoord 2, autoriteit 13%

str.isalpha()

Retourneer waar als alle tekens in de tekenreeks alfabetisch zijn en er is ten minste één teken, anders onwaar. Alfabetische tekens zijn de tekens die in de Unicode-tekendatabase zijn gedefinieerd als “Letter”, d.w.z. die met de algemene categorie-eigenschap “Lm”, “Lt”, “Lu”, “Ll” of “Lo”. Merk op dat dit verschilt van de eigenschap “Alfabetisch” die is gedefinieerd in de Unicode-standaard.

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

In python3.x:

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

Deze code werkt:

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

Antwoord 3

Ik heb een goede manier gevonden om dit te doen met behulp van een functie en basiscode.
Dit is een code die een string accepteert en het aantal hoofdletters, kleine letters en ook ‘overig’ telt. Andere wordt geclassificeerd als een spatie, leesteken of zelfs Japanse en Chinese karakters.

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

Antwoord 4

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)

Uitvoer:

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

Met str.isalpha()kun je controleren of het een letter is.


Antwoord 5

Dit werkt:

any(c.isalpha() for c in 'string')

Antwoord 6

Dit werkt:

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

Other episodes