2017-05-14 3 views
0

unicodedata.decomposition zerlegt sequenziell Unicode-Zeichen in ihre Komponenten, wobei die Rückgabewerte Zeichenfolgen aus durch Leerzeichen getrennten Codepunkten sind. EgHat die Standardbibliothek ein Gegenteil zu unicodedata.decomposition?

>>> unicodedata.decomposition("á") # 0061 is 'a' and 0301 is the 'acute accent' 
'0061 0301' 

ich mit Unicode-Zeichen gerade arbeite, die mehrere diakritische Zeichen haben (Vietnamese, zB e, o) und zersetzen sich nicht immer in der gewünschten Reihenfolge (Ich brauche den Ton Zeichen abzustreifen, aber nicht die andere diakritische Zeichen, falls vorhanden).

Also, ich bin auf der Suche nach einer Funktion, die Zeichen aus Codepunkten, z.

>>> compose([0x0065, 0x0302]) # 'e', 'circumflex' 
'ê' 

ADDENDUM: Während ich weiß, dass eine Funktion zu schreiben, die mein spezifisches Problem (Vietnamese) löst trivial ist, dass ich diese Frage in der Annahme geschrieben habe, dass das allgemeine Problem hat vor mir von jemandem gelöst und es ist vielleicht irgendwo in der Standardbibliothek.

Antwort

1

Die Antwort ist eigentlich nicht weit von Ihrem Link in der Python-doc, es ist die Funktion unten: unicodedata.normalize

>>> unicodedata.normalize('NFC', '\u0065\u0302') 
'ê' 
+0

Terrific. Vielen Dank. –

Verwandte Themen