Hallo,
ich schlage mich mit einem hartnäckigen kleinen Problem herum.
Ich lese strings aus einer Binärdatei über unpack aus, scheitere
jedoch an einer nachfolgenden Umwandlung der Strings in Floats
nachfolgend zwei Auszüge und die Fehlermeldung:
value = unpack('96s',f.read(96))[0]
value.strip()
value.upper()
# soweit so gut ....
# jetzt kommt das Problem:
print "\n>>>%f<<<" % string.atof(value)
Als Fehlermeldung erscheint:
print "\n>>>%f<<<" % string.atof(value)
File "C:\Python23\lib\string.py", line 205, in atof
return _float(s)
ValueError: null byte in argument for float()
Ich benutzte Python 2.3 auf WinXP.
Ich habe so ziemlich alles ausprobiert, was mir in den Sinn gekommen ist.
Für Hilfe bin ich sehr dankbar.
Moke
string to float conversiopn
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Wie wäre es mit:
Oder, wenn es doch ein String ist, einfach nur:
P.S.: http://www.python-forum.de/faq.php#21 !
Code: Alles auswählen
print "\n>>>%f<<<" % float(value)
Code: Alles auswählen
print "\n>>>%s<<<" % value
Jens,
vielen Dank für den Hinweis bezüglich des Codes. Ich gelobe Besserung.
Ich habe auch
benutzt, jedoch mit dem selben Ergebnis. Ich vermute, die Fehlermeldung
könnte etwas mit Nullbytes zu tun haben. Der
statement ist nur zum Debuggen benutzt worden. Ich benötige
wirklich Fließkommazahlen.
Moke
vielen Dank für den Hinweis bezüglich des Codes. Ich gelobe Besserung.
Ich habe auch
Code: Alles auswählen
float(value)
könnte etwas mit Nullbytes zu tun haben. Der
Code: Alles auswählen
print
statement ist nur zum Debuggen benutzt worden. Ich benötige
wirklich Fließkommazahlen.
Moke
Moke
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Dann hast du wohl mit unpack keine Zahl "gemacht"...
Versuch doch mal folgendes:
Versuch doch mal folgendes:
Code: Alles auswählen
value = unpack('96s',f.read(96))[0]
print ">>>%s<<<" % value.encode("String_Escape")