Warum bekomme ich diesen Fehler?
ValueError: Ungültiges Literal für int() mit Basis 10: ''.
Warum bekomme ich diesen Fehler?
ValueError: Ungültiges Literal für int() mit Basis 10: ''.
Am Ende der Fehlermeldung steht der Wert, der geparst werden sollte.
Um ein deutlicheres Beispiel zu nennen.
>>> int('55063.000000')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '55063.000000'
In Ihrem Fall haben Sie versucht, eine leere Zeichenkette als Ganzzahl zu analysieren.
Für das obige Float-Beispiel muss es zweimal umgewandelt werden.
>>> int(float('55063.000000'))
55063
Die folgenden sind in Python völlig akzeptabel:
int
float
float
int
float
Aber Sie bekommen eine ValueError
wenn Sie eine String-Repräsentation einer Schwimmer in int
oder eine Zeichenkettendarstellung von etwas anderem als einer ganzen Zahl (einschließlich einer leeren Zeichenkette). Wenn Sie eine String-Repräsentation eines Floats an eine int
Wie @katyhuff oben anmerkt, können Sie zuerst in eine Fließkommazahl und dann in eine Ganzzahl konvertieren:
>>> int('5')
5
>>> float('5.0')
5.0
>>> float('5')
5.0
>>> int(5.0)
5
>>> float(5)
5.0
>>> int('5.0')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '5.0'
>>> int(float('5.0'))
5
Pythonische Art der Iteration über eine Datei und Konvertierung in int:
for line in open(fname):
if line.strip(): # line contains eol character(s)
n = int(line) # assuming single integer on each line
Was Sie vorhaben, ist etwas komplizierter, aber immer noch nicht einfach:
h = open(fname)
for line in h:
if line.strip():
[int(next(h).strip()) for _ in range(4)] # list of integers
Auf diese Weise werden jeweils 5 Zeilen verarbeitet. verwenden h.next()
anstelle von next(h)
vor Python 2.6.
Der Grund, warum Sie ValueError
ist, weil int
kann eine leere Zeichenkette nicht in eine Ganzzahl umwandeln. In diesem Fall müssen Sie entweder den Inhalt der Zeichenkette vor der Umwandlung überprüfen oder einen Fehler ausschließen:
try:
int('')
except ValueError:
pass # or whatever
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.