Python: удалить греческие диакритические знаки / диакритические знаки. - PullRequest
1 голос
/ 14 июля 2020

Есть ли относительно простой способ удалить диакритические знаки из греческих строк? Например, если строка - «πάνω όροφος», я хочу, чтобы она стала «ο πανω οροφος», по-прежнему на греческом языке, без акцентов. Я хочу избежать замены строки, поскольку она может быть медленной, и в большинстве ответов на аналогичные вопросы используется код unidecode, который преобразует греческие символы в engli sh, а я этого не хочу.

1 Ответ

4 голосов
/ 14 июля 2020

Большинство официальных документов для чего-либо должны иметь только заглавные буквы и без диакритических знаков.

Это работает?

>>> import unicodedata as ud
>>> s="Ο πάνω όροφος"
>>> d = {ord('\N{COMBINING ACUTE ACCENT}'):None}
>>> ud.normalize('NFD',s).upper().translate(d)
'Ο ΠΑΝΩ ΟΡΟΦΟΣ'

Нормализация с помощью NFD отделяет базовые кодовые точки от диакритические знаки. В таблице перевода d перечислены порядковые переводы Unicode ... в данном случае удаляются диакритические знаки c. Я не знаком с использованием греческого диакрита c, поэтому таблицу, возможно, придется расширить.

.replace('\u0301','') можно использовать для одного акцента, но .translate() более эффективен, если есть несколько замен.

Пропустите .upper(), чтобы задать исходный вопрос:

>>> ud.normalize('NFD',s).translate(d)
'Ο πανω οροφος'
...