Noch einmal, ich bin sehr verwirrt mit einer Unicode-Frage. Ich kann nicht herausfinden, wie man unicodedata.normalize erfolgreich verwendet, um Nicht-ASCII-Zeichen wie erwartet zu konvertieren. Zum Beispiel möchte ich die Zeichenfolge
konvertieren %Vor%An
%Vor%Ich bin mir ziemlich sicher, dass UnicodeData.Normalize der Weg ist, dies zu tun, aber ich kann es nicht zum Laufen bringen. Es lässt nur die Zeichenfolge unverändert.
%Vor%Was mache ich falsch?
Ihr Problem scheint nicht mit Python zu tun zu haben, aber das Zeichen, das Sie zu zerlegen versuchen (u '\ u0153' - 'œ'), ist keine Komposition selbst.
Überprüfen Sie, ob Ihr Code mit einer Zeichenfolge arbeitet, die normale zusammengesetzte Zeichen wie "ç" und "ã" enthält:
%Vor%Und dann, wenn Sie die Unicode-Referenz für beide Zeichen (Ihr und c + cedila) überprüfen, werden Sie sehen, dass das spätere eine "Zerlegungs" -Spezifikation hat, die ersteren fehlt:
Es ist "œ" nicht formal gleichbedeutend mit "oe" - (zumindest nicht für die Leute, die diesen Unicode-Teil definiert haben) - also, der Weg, Text zu normalisieren, der dies enthält, ist eine manuelle Ersetzung der char für die Sequenz mit unicode.replace - so hacky wie es klingt.
Wie Jsbueno sagt, haben einige Buchstaben einfach keine Kompatibilitätszerlegung.
Sie können die Unicode CLDR Latein-ASCII-Transformation verwenden, um eine Zuordnung von manuellen Ersetzungen.
Tags und Links python unicode python-2.7 normalization unicode-normalization