Eigentlich sind wir jetzt in globalisierten Welt des 21. Jahrhunderts und die Menschen kommunizieren nicht mehr ASCII verwenden nur so, wenn Umleiteziels Frage nach „ist es nur Buchstaben“ müssen Sie berücksichtigen Buchstaben nehmen auch aus Nicht-ASCII-Alphabeten. Python hat eine ziemlich cool unicodedata-Bibliothek, die unter anderem Kategorisierung von Unicode-Zeichen erlaubt:
unicodedata.category('陳')
'Lo'
unicodedata.category('A')
'Lu'
unicodedata.category('1')
'Nd'
unicodedata.category('a')
'Ll'
Die categories and their abbreviations werden im Unicode-Standard definiert. Von hier aus können Sie ganz einfach können Sie mit einer Funktion wie diese kommen:
def only_letters(s):
for c in s:
cat = unicodedata.category(c)
if cat not in ('Ll','Lu','Lo'):
return False
return True
Und dann:
only_letters('Bzdrężyło')
True
only_letters('He7lo')
False
Wie Sie die weiße Liste Kategorien ganz einfach durch das Tupel innerhalb der gesteuert werden kann, sehen Funktion. Eine ausführlichere Diskussion finden Sie unter this article.
Hinweis: In Python2 ist dies nicht Unicode-bewusst, so dass '" ä ".isalpha()' ist False. Allerdings ist in python3 '" ä ".isalpha()' wahr, weil python3 unicode strings defaulty hat. – Squidly
@MrBones: Verwenden Sie in Python 2 ein "Unicode" -Objekt, wenn das wichtig ist. –
Ja, ich habe es nur als zusätzliche nützliche Information für ahnungslose Leser hinzugefügt. – Squidly