[Python-de] verzwicktes Umlaut /unicode Problem

Alexander Crössmann alexander.croessmann at gmail.com
Mi Jun 4 14:52:54 UTC 2008


Hallo,

ich hab da ein verzwicktes Problem mit Umlauten, bei dem mir auch die
Lektüre der python unicode Radgeber nicht weitergeholfen hat:

Ich hab eine csv Datei die ich mit hilfe des csv Moduls in ein
Dictionary umwandle. In dieser befinden sich in manchen Zeilen Umlaute
(im Editor im Klartext zu sehen).

Dann habe ich eine xml  Datei (<?xml version="1.0" encoding="UTF-8"?>)
die ich mit Hilfe eines Regulären Ausdrucks nach Feldern (z.B.
<<hallo>>) durchsuche. Ich splitte den Text, ersetze die Felder durch
Einträge aus dem Dictionary und füge sie wieder zusammen.

Nun das konkrete Problem mit den Umlauten:

Fall ohne unicode:

ohne Umlaut in der csv Zeile ist alles OK.

Wenn ich die csv Datei mit open("...", "rb") einlese und in der Zeile,
die ich verarbeite ein Umlaut ist dann sind im zusammengesetzten
Dokument die Umlaute kryptisch, die aus dem xml File kamen, die aus
der csv sind korrekt dargestellt.

Wenn ich die csv Datei mit open("...", "r") einlese und in der Zeile,
die ich verarbeite ein Umlaut ist dann sind im zusammengesetzten
Dokument die Umlaute nicht mehr im Klartext, die aus dem csv File
kamen, die aus der csv sind korrekt dargestellt.

Wenn ich das Dictionary ausgebe erhalte ich für ein ü z.B. \\xc4\\x87.
Wenn ich die Einträge aus dem Dictionary herausholen sind sie vom Typ
String.

Kann mir jemand sagen was das für eine Codierung ist, die da im
Dictionary für ein ü steht und wie ich sie mit dem String Text
zusammen bekomme?

Wenn ich die Einträge im Dictionary nun utf8 codieren will, erhalte
ich die Fehlermeldung "UnicodeDecodeError: 'utf8' can't decode bytes
in positon  2-4 invalid data". An vielen anderen Stellen habe ich auch
versucht hin und her zu codieren, war aber nicht erfolgreich.

Vielen Dank schon mal,
Alex.