Hey,
mein Problem:
Ich will ein datensatz mit struct packen, den ich als txt-file habe. Lese ich den file ein verwandelt mir python jedes \ in \\. Will ich aber nicht, versteht struct nämlich nicht.
file I/O
Wie siehst Du denn die doppelten '\\'? Wenn Du die Zeichenkette mit ``print repr(string)`` anzeigst, dann werden Sonderzeichen und alles was nicht "druckbar" ist mit Ersatzzeichenfolgen dargestellt, die mit einem '\' anfangen. Zeilenumbrüche zum Beispiel als '\n' oder Zeichen ausserhalb des ASCII Bereichs als Hexadezimalzahlen in der Form '\x??' wobei die Fragezeichen zwei Hex-Ziffern sind. Ein einfacher '\' wird dann als '\\' dargestellt damit es keine Mehrdeutigkeiten geben kann.
Die `repr()` Form wird auch in der interaktiven Python-Konsole ausgegeben.
Die `repr()` Form wird auch in der interaktiven Python-Konsole ausgegeben.
Vielen Dank für die Antworten erstma. Also, es ist so, ich hab einen Datensatz, der aus floats, integers, characters usw besteht. Das sieht z.B. so aus:
((0.51999998092651367, 2.1579999923706055, 'D', ':', '\\', 'E', 'D', 19392, 30626, 6, 0, 5115, 30623, -16384, 127, 155, 0, 6, 0, -2456, 18, 6313, 30623, -5560, 30626, -2456, '\xbb', '4', 7936, 18, 6076, 30623, 9, 0, 1, 0, 96, 0, 6149, 30623, 96, 0, 10656, 211, -976, 18, 13966, 30624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00' usw...
Den will ich jetzt mit Hilfe eines Formatcodes packen. Da struct.pack weder Liste noch tuple noch sting annimmt, weiß ich mir nur mit eval(struct.pack(formatstr,datenstr)) zu helfen. Wenn ich die Datendatei öffne wird aus '\xbb' '\\xbb und aus '\x00' '\\x00'. Dann krieg ich aber ne Fehlermeldung von python, da er das nicht mehr als Hexadezimalstelle annimmt.
Habt ihr ne bessere Idee?
Dank.
lala
((0.51999998092651367, 2.1579999923706055, 'D', ':', '\\', 'E', 'D', 19392, 30626, 6, 0, 5115, 30623, -16384, 127, 155, 0, 6, 0, -2456, 18, 6313, 30623, -5560, 30626, -2456, '\xbb', '4', 7936, 18, 6076, 30623, 9, 0, 1, 0, 96, 0, 6149, 30623, 96, 0, 10656, 211, -976, 18, 13966, 30624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00' usw...
Den will ich jetzt mit Hilfe eines Formatcodes packen. Da struct.pack weder Liste noch tuple noch sting annimmt, weiß ich mir nur mit eval(struct.pack(formatstr,datenstr)) zu helfen. Wenn ich die Datendatei öffne wird aus '\xbb' '\\xbb und aus '\x00' '\\x00'. Dann krieg ich aber ne Fehlermeldung von python, da er das nicht mehr als Hexadezimalstelle annimmt.
Habt ihr ne bessere Idee?
Dank.
lala