Все зависит от того, как далеко вы хотите зайти в транслитерации результата.Если вы хотите преобразовать все до ASCII (αβγ
в abg
), тогда unidecode
- это путь.
Если вы просто хотите удалить акценты в акцентированных буквах, то вы можетепопробуйте разложить вашу строку, используя форму нормализации NFKD (это преобразует акцентированную букву á
в простую букву a
, за которой следует U+0301 COMBINING ACUTE ACCENT
), а затем отбрасывает акценты (которые принадлежат к классу символов Unicode Mn
- «Марка без пробелов»).
import unicodedata
def remove_nonspacing_marks(s):
"Decompose the unicode string s and remove non-spacing marks."
return ''.join(c for c in unicodedata.normalize('NFKD', s)
if unicodedata.category(c) != 'Mn')