Czy w Pythonie istnieje standardowa metoda normalizowania łańcucha znaków Unicode, aby zawierał on tylko najprostsze jednostki Unicode, które można wykorzystać do ich reprezentacji?Normalizowanie Unicode
Mam na myśli coś, co tłumaczy sekwencję taką jak ['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
na ['LATIN SMALL LETTER A WITH ACUTE']
?
zobaczyć, gdzie jest problem:
>>> import unicodedata
>>> char = "á"
>>> len(char)
1
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A WITH ACUTE']
Ale teraz:
>>> char = "á"
>>> len(char)
2
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
Mógłbym, oczywiście, iteracyjne nad wszystkie znaki i zrobić ręcznie zamienniki itp, ale to nie jest sprawna i jestem prawie pewna, że przegapiłabym połowę specjalnych przypadków i popełniłbym błędy.
Wśród tych form, NFC jest najbliżej spełnienia wymogu "obejmuje tylko najprostsze jednostki unicode, które mogą być używane do reprezentowania go" interpretowane jest jako odnosząca się do najmniejszej liczby punktów kodu Unicode. Jednak NFC wpływa również na inne rzeczy, np. zastępowanie znaków ich odpowiednikami kanonicznymi. Aby wykonać * tylko * część minimalizacji, obawiam się, że musiałbyś ją zaprogramować samodzielnie. –