Wie kann ich überprüfen, ob das Zeichen in einer Zeichenfolge ein Buchstabe ist? (Python)


121

Ich weiß von islowerund isupper, aber können Sie überprüfen, ob dieses Zeichen ein Buchstabe ist oder nicht? Beispielsweise:

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

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

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

Gibt es eine Möglichkeit, einfach zu fragen, ob es sich neben .islower()oder um einen Charakter handelt .isupper()?


2
Bitte beachten Sie, dass sich "Wortzeichen" in der Programmierung normalerweise auf Buchstaben, Zahlen und Unterstriche bezieht. Diese Frage fragt tatsächlich nach "Briefen"; Wenn Sie sehen müssen, ob ein Zeichen ein Wortzeichen ist, ist der beste Weg, den ich gefunden habe, der character.isalnum() or character == "_".
Variadicism

Ich weiß, aber ich habe das wie vor 3 Jahren gefragt, als ich anfing zu programmieren. Fühlen Sie sich frei, es zu bearbeiten.
O.rka

Meinetwegen. Das haben wir alle schon durchgemacht. Ich werde eine Bearbeitung anfordern.
Variadicism

Antworten:


190

Sie können verwenden str.isalpha().

Beispielsweise:

s = 'a123b'

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

Ausgabe:

a True
1 False
2 False
3 False
b True

9
Bitte beachten Sie, es ist so gut, dass es auch für verschiedene Alphabete funktioniert: >>> print [x.isalpha() for x in u'Español-한국어']gibt Ihnen [Wahr, Wahr, Wahr, Wahr, Wahr, Wahr, Wahr, Falsch, Wahr, Wahr, Wahr] wie erwartet
Pryma

27
str.isalpha()

Geben Sie true zurück, wenn alle Zeichen in der Zeichenfolge alphabetisch sind und mindestens ein Zeichen vorhanden ist, andernfalls false. Alphabetische Zeichen sind Zeichen, die in der Unicode-Zeichendatenbank als "Buchstabe" definiert sind, dh Zeichen mit allgemeiner Kategorieeigenschaft sind "Lm", "Lt", "Lu", "Ll" oder "Lo". Beachten Sie, dass sich dies von der im Unicode-Standard definierten Eigenschaft „Alphabetic“ unterscheidet.

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

Dieser Code funktioniert:

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

Ich habe einen guten Weg gefunden, dies mit einer Funktion und einem Basiscode zu tun. Dies ist ein Code, der eine Zeichenfolge akzeptiert und die Anzahl der Großbuchstaben, Kleinbuchstaben und auch "Sonstige" zählt. Andere werden als Leerzeichen, Satzzeichen oder sogar als japanische und chinesische Schriftzeichen klassifiziert.

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.isalphaist viel einfacher als '
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)

Ausgabe:

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

Mit können str.isalpha()Sie überprüfen, ob es sich um einen Buchstaben handelt.



-2

Das funktioniert:

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

Verwenden Sie stattdessen ==, wenn a falsch ist
Legolas Bloom
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.