Erlauben Sie Nur Alpha-Zeichen in Python?
Ich Schreibe ein Programm, ein Teil davon erfordert die Eingabe eines namens.
Der name kann nur alpha-und Leerzeichen (zB. John Smith), kann es nicht sein, John Smith1
Wenn ein ungültiges Zeichen eingegeben WIRD, muss ich das Programm auf eine Fehlermeldung angezeigt, und echte Fragen. Ich habe alles, aber die Validierung. Ich vermute, es geht so etwas?
name = str(input("What is the customers name? "))
while True:
if ??????????????????? :
print("You have entered an invalid character. Enter only name."
name = str(input("What is the customers name? "))
else:
break
Kann jemand bitte füllen Sie die ?????
s, dem Programm zu arbeiten?
- Tim O ' Reilly wird nicht erfreut sein, wenn er versucht, Ihr Programm. Weder wird 毛澤東.
- Ich denke, das wäre eine Frage für die Lehrer vorgeschlagen, dass die Abtretung an.
- Würde ich mit einer while-Schleife in den if-Konstrukt, in dem Beispielcode.
- Es muss nur einfach sein. Es müssen nicht alle diese Funktionen. Der Lehrer weiß die Antwort nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen die
isalpha()
- Methode von strings.Da die person geben Sie die Namen mit Leerzeichen haben Sie zwei Optionen:
split()
)string.letters
Beispiel:
Verbinden das mit einer
' '
um Ihre Liste der erlaubten Zeichen. Da dies Hausaufgaben, der rest ist bis zu Ihnen.split()
können Siereplace(" ", "")
. Also statt der "?????" in den OP-Beispiel sollte mannot the_name.replace(" ", "").isalpha()
dieTrue
wenn der name, ohne Leerzeichen und hat einige nicht-alphabetische Zeichen.Können Sie die
replace
- Methode von strings, um loszuwerden, white-spaces und verwenden Sie dann dieisalpha()
Methode.Beispiel:
Beachten Sie, dass dies funktioniert auch mit nicht-ascii-Buchstaben in Python ist3:
Reguläre Ausdrücke sind viel zu kompliziert für diese einfache Aufgabe.
Auch, weil mit
[A-Za-z ]+
oder ähnliches nicht passen Namen mit nicht-ASCII-Buchstaben.Und mit
\w
umfasst stellen.Wenn Sie nicht passen wollen, die nicht-ASCII-Buchstaben(z.B. 'è'), dann kannst du versuchen so etwas wie dieses:
Schließlich, einen anderen Weg zu prüfen, ist dieses:
Und Sie können es verwenden, auf diese Weise:
Vielleicht möchten Sie sich in reguläre Ausdrücke:
ist ein regex entspricht nur Zeichenfolgen, wenn Sie bestehen ausschließlich aus ASCII-Buchstaben und Leerzeichen.
Damit auch Briefe von Ihrem aktuellen Gebietsschema:
die im Grunde ist der Satz von alphanumerischen Zeichen, einschließlich Sonderzeichen (in der aktuellen locale) abzüglich Ziffern und dem Unterstrich bestehen.
Reguläre Ausdrücke verwenden, so etwas wie
[A-Za-z ]+
Wäre es zu übersetzen in etwas wie diesem, wenn ich Tim ' s Ausdruck:
Überprüfen Sie die Zeichenfolge für die alpha habe ich in der Regel verwenden Sie diese ein. Hoffe das kann dir helfen.