Есть ли стандартный способ в Python для нормализации строки в Юникоде, так что он только постигает простейшие юникодные сущности, которые могут быть использованы для его представления?
Я имею в виду что-то, что бы перевести последовательность, например ['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
в ['LATIN SMALL LETTER A WITH ACUTE']
?
Посмотрите, где проблема:
>>> import unicodedata
>>> char = "á"
>>> len(char)
1
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A WITH ACUTE']
Но теперь:
>>> char = "á"
>>> len(char)
2
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
Я мог бы, конечно, перебирать все символы и выполнять ручные замены и т.д., но это неэффективно, и я уверен, что я пропущу половину особых случаев и сделаю ошибки.