Hallo zusammen, ich hab in Python ein Problem mit der Kodierung von Texten. Das Programm soll Texte verarbeiten. Dabei ist der Vergleich von Worten wichtig. Nun bin ich bei einem Text auf folgendes Problem gestoßen: >>> 'glücklich' == 'glücklich' False >>> u'glücklich' == u'glücklich' False >>> 'ü' == 'ü' False >>> 'glücklich'.decode('utf-8') u'glu\u0308cklich' >>> 'glücklich'.decode('utf-8') u'gl\xfccklich' Das Beispiel ist stellvertretend für alle Umlaute in diesem Text. Ich kenne mit leider mit Kodierungen nicht so sehr aus. Gibt es eine Möglichkeit das 'andere' ü in ein für mich bekanntes ü zu verwandeln? Vielen Dank im Voraus Liebe Grüße Martin
Du hast einen text im format ISO 8859-1 (extended ascii) und einen in UTF-8. Speichere entweder alles im felben Format, wobei ich utf8 empfehle, oder ermittle die Kodierung im python script und convertiere es ensprechend. In python sind mir die funktionen encode und decode ein rätsel. Beim Konvertieren gibt es immer ein Quell und ein Zielvormat, die encode und decode funktionen enthalten aber nicht beide. Versuch mal die encode function, viel glück! Kodierungsprobleme sind immer die Hölle.
unicodedata.normalize() regelt:
1 | >>> import unicodedata |
2 | >>> unicodedata.normalize('NFC', u'Glu\u0308cklich') |
3 | u'Gl\xfccklich' |
4 | >>> unicodedata.normalize('NFC', u'Gl\xfccklich') |
5 | u'Gl\xfccklich' |
6 | >>> unicodedata.normalize('NFC', u'Glu\u0308cklich') == unicodedata.normalize('NFC', u'Gl\xfccklich') |
7 | True |
Rest steht in der Doku. HTH
Super, Vielen Dank! War schon am verzweifeln.. aber damit klappt alles. Vielen Dank nochmal! lg Martin
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.