Ich möchte Daten mit escapten Umlauten aus einer Datei lesen und als UTF-8-Datei (mit den Umlauten) in eine Datei schreiben.
Die Lesedatei enthält z.B. "n\xf6rgeln" und ich möchte es in eine Datei als "nörgeln" speichern.
Jetzt verhält sich Python komisch.
Wenn ich den String direkt als
Code: Alles auswählen
s = "n\xf6rgeln"
Code: Alles auswählen
s = s.decode("cp1252")
Das Problem ist, dass wenn ich diesen Stringteil aus einer Datei lese, der String die ganze Zeit mit der Escape-Sequenz erhalten bleibt. Beim Debuggen fällt auf, dass "s" gleich "n\\xf6rgeln" ist, also dass der Backslash escapt wurde. Die Umwandlung in Unicode mittels decode bringt dann leider nichts, die Sequenz bleibt erhalten; es entsteht also nicht u"nörgeln", sondern u"n\\xf6rgeln".
Liegt das daran, dass ich aus einer Datei lese? Ich versteh das Verhalten hier nicht.
Hier mal ein bisschen mehr Code:
Datei, aus der gelesen wird:
Code: Alles auswählen
[...]
text=n\xf6rgeln
[...]
Code: Alles auswählen
fobj = open("datei.txt", "r")
for line in fobj:
line = line.strip()
curText = line.split("=")[1]
curText = curText.decode("cp1252")
print curText
fobj.close()
Bitte um Hilfe, danke
Qdeep