Seite 1 von 1

string to float conversiopn

Verfasst: Dienstag 23. Mai 2006, 15:48
von Moke
Hallo,

ich schlage mich mit einem hartnäckigen kleinen Problem herum. :twisted:

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

Verfasst: Dienstag 23. Mai 2006, 17:31
von jens
Wie wäre es mit:

Code: Alles auswählen

print "\n>>>%f<<<" % float(value)
Oder, wenn es doch ein String ist, einfach nur:

Code: Alles auswählen

print "\n>>>%s<<<" % value
P.S.: http://www.python-forum.de/faq.php#21 !

Verfasst: Dienstag 23. Mai 2006, 18:12
von Moke
Jens,

vielen Dank für den Hinweis bezüglich des Codes. Ich gelobe Besserung.
Ich habe auch

Code: Alles auswählen

float(value)
benutzt, jedoch mit dem selben Ergebnis. Ich vermute, die Fehlermeldung
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

Verfasst: Dienstag 23. Mai 2006, 18:34
von jens
Dann hast du wohl mit unpack keine Zahl "gemacht"...

Versuch doch mal folgendes:

Code: Alles auswählen

value = unpack('96s',f.read(96))[0]
print ">>>%s<<<" % value.encode("String_Escape")