Ich habe ein Python-Skript, das liest eine CSV-Datei und speichert jeden der Werte in einer Liste von Listen: list [x] [y]. Ich habe damit keine Probleme.Überprüfen, ob Element in einer Python-Liste eine Int/Nummer ist
Ich möchte eines dieser Felder überprüfen, um zu sehen, ob es eine Zahl (ganze Zahl) ist.
Wenn ich ausführen ein print type(list[i][0])
es gibt <type 'str'>
obwohl der Wert sagen 100.
Die if-Anweisungen unten in einer for
Schleife sind so die Listen iteriert durch das, was ich dachte zu tun, einen Scheck tut:
if type(list[i][0] == types.IntType):
True
else:
False
Dies funktioniert jedoch, dass bei der in PEP8 verpönt ist und so sollte ich isinstance()
verwenden, daher habe ich es zu
# check if a value is entered
if list[i][0] != '':
if isinstance(int(list[i][0]), int):
True
else:
False
else
False
Aber ich stoße auf das Problem zu versuchen, eine Zeichenfolge in ein int zu konvertieren (wenn der Benutzer eine Zeichenfolge eingibt).
Wie überwinde ich das? Es scheint ein einfaches Problem zu sein, aber ich bin neu in Python, also habe ich mich über eine saubere und effiziente Art und Weise gefragt, damit umzugehen. Sollte ich prüfen, ob der Wert ein int ist, bevor ich ihn in der Liste ablege?
Ich benutze Python2.
Dank
edit: Ich habe die isinstance()
Scheck um einen Versuch Ausnahme fangen aber ich dieses Gefühl, ich sollte nicht nur eingewickelt haben Zuflucht zu überprüfen, ob etwas ein int ist oder nicht? Ich bin nur neugierig, ob es einen besseren Weg dafür gibt.
bearbeiten: Ich habe isdigit
wie bereits erwähnt verwendet, aber ich bekam negative Ergebnisse.
d. H. Diesen Datensatz angegeben. Liste [0] [0] = 123, Liste [1] [0] = asdasd
for i in range(0, 1):
if (list[i][0]).isdigit:
tempInt = list[i][0]
print type(tempInt)
print 'True: ' + tempInt
else:
tempInt = 1
print 'False: ' + tempInt
Ergebnisse:
<type 'str'>
True: 123
<type 'str'>
True: asdasd
Ich denke, das Duplikat ist falsch. Ziemlich sicher, dass er "123" in "123" umwandeln möchte, was durch 'somestring.isdigit' gemacht wird, um zu überprüfen oder' int (somestring) 'zu konvertieren. –
@ReutSharabani Ja, Sie haben Recht, diese doppelte Frage bezieht sich nicht auf mein Problem – Brendan
Ich empfehle, die Antworten dieser Frage durchzulesen. Du findest [eine, die ausdrücklich 'isdigit()'] erwähnt (http://stackoverflow.com/a/23464130/2617068). – TigerhawkT3