Konvertieren eines Strings (mit wissenschaftlicher Notation) in ein int in Python

8

Ich versuche, eine Reihe von Zeichenfolgen aus einer TXT-Datei in int-Dateien innerhalb einer Liste zu konvertieren. Ich konnte ein nettes Codeschnipsel finden, das jede Zeile zurückgibt, und dann versuchte ich, es in ein int umzuwandeln. Das Problem ist, dass die Zahlen in wissenschaftlicher Notation sind und ich diesen Fehler erhalte: ValueError: ungültiges Literal für int () mit Basis 10: '3.404788e-001'.

Dies ist der Code, mit dem ich herumgespielt habe

%Vor%     
DamianJ 18.02.2012, 04:20
quelle

2 Antworten

14

Verwenden Sie float(i) oder decimal.Decimal(i) für Gleitkommazahlen, abhängig davon, wie wichtig die Genauigkeit für Sie ist.
float speichert die Zahlen in maschinenpräzisen IEEE Gleitkommazahlen, während Decimal beibehalten wird volle Genauigkeit, auf Kosten von langsamer.
Außerdem können Sie über eine geöffnete Datei iterieren, Sie müssen readlines() nicht verwenden.
Und ein einzelnes Listenverständnis kann alles tun, was Sie brauchen:

%Vor%

Wenn Sie wirklich nur ganze Zahlen benötigen, können Sie int(float(number))

verwenden     
tzaman 18.02.2012, 04:21
quelle
4

Ihre Zeichenfolge sieht wie ein float aus, also wandeln Sie sie in ein float zuerst um.

    
Ignacio Vazquez-Abrams 18.02.2012 04:22
quelle

Tags und Links