2013-09-06 6 views

Antwort

11

Die str.isalpha() Funktion arbeitet. dh.

if my_string.isalpha(): 
    print('it is letters') 
54

Ganz einfach:

if string.isalpha(): 
    print("It's all letters") 

str.isalpha() ist nur wahr, wenn alle Zeichen in der Zeichenfolge sind Buchstaben:

Return true, wenn alle Zeichen in der Zeichenfolge sind alphabetisch und es gibt mindestens ein Zeichen, ansonsten falsch.

Demo:

>>> 'hello'.isalpha() 
True 
>>> '42hello'.isalpha() 
False 
>>> 'hel lo'.isalpha() 
False 
+10

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

+0

@MrBones: Verwenden Sie in Python 2 ein "Unicode" -Objekt, wenn das wichtig ist. –

+0

Ja, ich habe es nur als zusätzliche nützliche Information für ahnungslose Leser hinzugefügt. – Squidly

6

Für Menschen, diese Frage über Google zu finden, wollen vielleicht wissen, ob eine Zeichenfolge nur eine Teilmenge aller Buchstaben enthält, empfehle ich mit regulären Ausdrücken:

import re 

def only_letters(tested_string): 
    match = re.match("^[ABCDEFGHJKLM]*$", tested_string) 
    return match is not None 
+5

Sorry, dass ich pingelig gehe, aber die Regex in deinem Beispiel könnte auch '^ [A-HJ-M] * $' sein, was meiner Meinung nach besser lesbar ist . – Petzku

-1

Eine recht einfache Lösung I kam mit nach oben: (Python 3)

def only_letters(tested_string): 
     for letter in tested_string: 
      if not letter in "abcdefghjklmnopqrstuvwxyz": 
       return False 
     return True 

Sie ein Leerzeichen in der Zeichenfolge hinzufügen können, überprüft wird, wenn Sie wollen Räume dürfen.

+0

wenn Brief * nicht * in "abcdefghklmnopqrstuvwxyz" – Guibod

+0

Sie vermissen ein I, und nicht nicht richtig verwenden: 'wenn Brief ** nicht ** in" abcdefgh ** i ** jklmnopqrstuvwxyz "' – Guibod

+0

Sie würden wahrscheinlich wollen um 'if letter.lower() ...' 'zu verwenden, würden Großbuchstaben nicht zählen. Das "String" -Modul hat auch eine Variable, die für alle Buchstaben im Alphabet vordefiniert ist. Tatsächlich gibt es drei: für Großbuchstaben, Kleinbuchstaben und beides. Natürlich ist die einfachere Lösung bereits oben angegeben: 'isalpha'. – zondo

4

Sieht aus wie Leute sagen, str.isalpha zu verwenden.

Dies ist die Ein-Zeilen-Funktion, um zu prüfen, ob alle Zeichen Buchstaben sind.

def only_letters(string): 
    return all(letter.isalpha() for letter in string) 

all akzeptiert eine iterable von booleans und gibt True iff alle der booleans True sind.

Allgemein gibt allTrue zurück, wenn die Objekte in Ihrem Iterable als True betrachtet werden. Diese würden False

  • None
  • Leere Datenstrukturen betrachtet werden (dh: len(list) == 0)
  • False.(Duh)
+0

Dies ist die interessanteste Lösung, da es einfach ist, die Prämisse für jedes Zeichen zu negieren. – Alex

+1

'isalpha' prüft bereits jeden Buchstaben. Es gibt keine Notwendigkeit, es mehr als einmal zu verwenden. – zondo

0
func only_letters(str): 
    return not any(str.isdigit(c) for c in str) 
+0

Es gibt viele Zeichen, die nicht Ziffern und auch nicht alphabetisch sind, also ist dies eine sehr unzuverlässige Lösung. – zondo

3

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.

0

(1) Verwenden Sie str.isalpha(), wenn Sie die Zeichenfolge drucken.

(2) Überprüfen Sie bitte unten Programm für Ihre Referenz: -

str = "this"; # No space & digit in this string 
print str.isalpha() # it gives return True 

str = "this is 2"; 
print str.isalpha() # it gives return False 

Hinweis: - ich oben Beispiel in Ubuntu überprüft.

Verwandte Themen