Python - Konvertierung wide-char-Zeichenfolgen aus einer binären Datei in Python unicode-strings
Es war ein langer Tag und ich bin ein bisschen ratlos.
Bin ich beim Lesen einer Binär-Datei, die enthält viele wide-char-strings und ich möchte dump diese als Python-unicode-Zeichenfolgen. (Zum entpacken der nicht-string-Daten ich bin mit der struct-Modul, aber ich weiß nicht, wie zu tun, der mit dem gleichen Zeichenfolgen).
Z.B. beim Lesen das Wort "Serie":
myfile = open("test.lei", "rb")
myfile.seek(44)
data = myfile.read(12)
# data is now 'S\x00e\x00r\x00i\x00e\x00s\x00'
Wie kann ich codieren, dass raw-wide-char-Daten) als Python-string?
Edit: ich bin mit Python 2.6
file
sollen nicht verwendet werden, um Dateien zu öffnen;open
ist.codecs.open
ist toll, wenn das wirklich eine text-Datei, sondern eine in einem etwas komisch Codierung.- Mike G - ganz Recht, habe ich korrigiert, Beispiel. Eigentlich verwende ich normalerweise "öffnen", aber etwas war screwy mit meinem ipython-shell heute und gab es mir einen obskuren Fehler. Ich würde wahrscheinlich überschrieben es mit etwas anderem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich auch empfehlen
rstrip
mit'\x00'
nach der decode - entfernen Sie alle'\x00'
nachfolgende Zeichen, es sei denn, natürlich, Sie sind nicht erforderlich.Ohne
rstrip('\x00')
wird das Ergebnis mit Leerzeichen:Wenn die Zeichenfolge in Frage bekannt ist, nicht um irgendwelche Zeichen über FF, eine weitere Möglichkeit, die Sie erzeugt einen string anstatt ein unicode-Objekt, eliding die null-bytes:
Hmm, warum sagen Sie "öffnen" vorzuziehen ist, um "Datei"? Ich sehe in der Referenz (python 2.5):