Замяна на не-ascii знаци от низ в Unicode в Python

Как мога да заменя не-ascii знаци от низ в unicode в Python?

Това е изходът, който гледам за дадените входове:

музика -> музика

cartón -> кашон

каньо -> кано

Myaybe с dict, където 'á' е ключ и 'a' стойност?


person Juanjo Conti    schedule 13.09.2010    source източник
comment


Отговори (2)


Ако всичко, което искате да направите, е да деградирате знаците с ударение до техния еквивалент без ударение:

>>> import unicodedata
>>> unicodedata.normalize('NFKD', u"m\u00fasica").encode('ascii', 'ignore')
'musica'
person llasram    schedule 13.09.2010
comment
Какво прави NFKD? - person bikashg; 15.10.2019
comment
@bikashg Декомпозиция на съвместимост на формата за нормализиране. Разлага низа по съвместимост, което едновременно разлага всички предварително комбинирани знаци в еквивалентна последователност от комбиниращи знаци, но също така трансформира напр. лигатури в семантично еквивалентната последователност от съставни знаци. Вижте en.wikipedia.org/wiki/Unicode_equivalence#Normalization за пълни подробности и препратки към съответните стандарти. - person llasram; 16.10.2019

Сега, само за да допълня този отговор: Възможно е вашите данни да не идват в unicode (т.е. четете файл с друго кодиране и не можете да добавите низа с префикс "u"). Ето един фрагмент, който също може да работи (най-вече за тези, които четат файлове на английски).

import unicodedata
unicodedata.normalize('NFKD',unicode(someString,"ISO-8859-1")).encode("ascii","ignore")
person fiacobelli    schedule 09.02.2013