Wie prüft man, ob eine Zeichenfolge nur Zahlen enthält?
Ich habe es hier versucht. Ich würde gerne den einfachsten Weg sehen, dies zu erreichen.
import string
def main():
isbn = input("Enter your 10 digit ISBN number: ")
if len(isbn) == 10 and string.digits == True:
print ("Works")
else:
print("Error, 10 digit number was not inputted and/or letters were inputted.")
main()
if __name__ == "__main__":
main()
input("Press enter to exit: ")
False
dastring.digits == True
immer ausgewertet wirdFalse
.Antworten:
Sie möchten die
isdigit
Methode auf Ihrem verwendenstr
Objekt verwenden:Aus der
isdigit
Dokumentation :quelle
isdigit
, aber einValueError
Wenn ausgelöst, an das übergeben wirdint()
.Verwendung
str.isdigit
:quelle
try: assert str(int(foo)) == foo; except (AssertionError,ValueError): #handle
und es fühlte sich hässlich an wie Sünde. Vielen Dank!Verwenden Sie die Funktion string isdigit :
quelle
Sie können auch den regulären Ausdruck verwenden.
zB: -1) word = "3487954"
zB: -2) word = "3487.954"
zB: -3) word = "3487.954 328"
Wie Sie alle 3 sehen können, bedeutet zB, dass Ihre Zeichenfolge nur keine enthält. So können Sie den jeweiligen Lösungen folgen.
quelle
re.match('^[0-9\.]*$',word)
schlägt für Floats fehl.if(bool(re.search(r'\d', word)))
funktioniert aber gut.Was ist mit Float-Zahlen , negativen Zahlen usw. Alle vorherigen Beispiele sind falsch.
Bis jetzt habe ich so etwas bekommen, aber ich denke, es könnte viel besser sein:
wird nur dann true zurückgeben, wenn es ein oder kein '.' gibt. in der Ziffernfolge.
wird false zurückgeben
quelle
Wie in diesem Kommentar ausgeführt Wie überprüfen Sie in Python, ob eine Zeichenfolge nur Zahlen enthält? Die
isdigit()
Methode ist für diesen Anwendungsfall nicht ganz genau, da sie für einige ziffernähnliche Zeichen True zurückgibt:Wenn dies vermieden werden muss, prüft die folgende einfache Funktion, ob alle Zeichen in einer Zeichenfolge eine Ziffer zwischen "0" und "9" sind:
Verwendet im Beispiel aus der Frage:
quelle
all(ch in string.digits for ch in s)
.Sie können try catch block hier verwenden:
quelle
except ValueError:
int("1_000")
führt zum Beispiel nicht zu einem Fehler.Wie jedes Mal, wenn ich auf ein Problem mit der Prüfung stoße, kann der str manchmal None sein, und wenn der str None sein kann, reicht es nicht aus, nur str.isdigit () zu verwenden, da Sie eine Fehlermeldung erhalten
und dann müssen Sie zuerst überprüfen, ob str str None ist oder nicht. Um einen Multi-If-Zweig zu vermeiden, ist dies ein klarer Weg:
Ich hoffe, dies hilft Menschen, die das gleiche Problem haben wie ich.
quelle
Es gibt zwei Methoden, mit denen ich prüfen kann, ob eine Zeichenfolge alle Ziffern hat oder nicht
Methode 1 (Verwenden der integrierten Funktion isdigit () in Python): -
Methode 2 (Ausführen der Ausnahmebehandlung über der Zeichenfolge): -
Die Ausgabe des obigen Codes lautet:
quelle
Sie können die Methode str.isdigit () oder die Methode str.isnumeric () verwenden
quelle