Die Konvertierung von string (wissenschaftliche notation) mit einem int-Datentyp in Python
Ich versuche zu konvertieren eine Anzahl von strings aus einer txt Datei in int ' s innerhalb einer Liste. Ich war in der Lage zu finden, ein nettes code-snippet, das gibt jeder Zeile und dann begab ich mich zu versuchen, und konvertieren Sie es in ein int. Das problem ist, dass die zahlen in der wissenschaftlichen Schreibweise und ich bekomme diese Fehlermeldung: ValueError: invalid literal for int() with base 10: '3.404788 e-001'.
Dies ist der code, den ich ve wurde Herumspielen mit
data = []
rawText = open ("data.txt","r")
for line in rawText.readlines():
for i in line.split():
data.append(int(i))
print data[1]
rawText.close()
- Sie sind nicht nur "in der wissenschaftlichen notation"; Sie repräsentieren nicht-Ganzzahlen. Genau das, was Ergebnis waren Sie in der Hoffnung zu bekommen für die input '3.404788 e-001'?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
float(i)
oderdecimal.Decimal(i)
für floating-point-zahlen, je nachdem, wie wichtig die Aufrechterhaltung der Präzision ist Sie.float
speichert die zahlen in Maschinen-precision IEEE floating point, währendDecimal
pflegen Sie die volle Genauigkeit, auf Kosten des seins langsamer.Auch Sie können Durchlaufen Sie eine Datei öffnen, brauchen Sie nicht zu verwenden
readlines()
.Und eine einzelne Liste mit Verständnis tun können, alles, was Sie brauchen:
Wenn Sie wirklich brauchen nur Ganzzahlen verwenden, können Sie
int(float(number))
Ihren string sieht aus wie ein
float
, so konvertieren Sie es in einfloat
ersten.