Normalizando Unicode
Existe uma maneira padrão, em Python, para normalizar uma cadeia unicode, de modo que ela só compreenda as entidades unicode mais simples que podem ser usadas para representá-la?
Quero dizer, algo que traduziria uma sequência como['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
para['LATIN SMALL LETTER A WITH ACUTE']
?
Veja onde está o problema:
>>> import unicodedata
>>> char = "á"
>>> len(char)
1
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A WITH ACUTE']
Mas agora:
>>> char = "á"
>>> len(char)
2
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
Eu poderia, é claro, fazer uma iteração sobre todos os caracteres e fazer substituições manuais, etc., mas isso não é eficiente, e tenho certeza que perderia metade dos casos especiais e cometeria erros.