Python:删除希腊语变音符号/口音

Ant*_*las 1 python string unicode string-formatting

是否有一种相对简单的方法可以从希腊字符串中删除变音符号?例如,如果字符串是“? ?????? ??????” 我希望它变成“? ???? ??????”,仍然是希腊语,没有口音。我想避免字符串替换,因为它可能很慢,并且大多数类似问题的答案都使用 unidecode 将希腊字符转换为英语,我不想要那样。

Mar*_*nen 5

大多数官方文件都只需要大写,不需要变音符号。

这行得通吗?

>>> import unicodedata as ud
>>> s="? ???? ??????"
>>> d = {ord('\N{COMBINING ACUTE ACCENT}'):None}
>>> ud.normalize('NFD',s).upper().translate(d)
'? ???? ??????'
Run Code Online (Sandbox Code Playgroud)

使用 NFD 规范化将基本代码点与变音符号分开。该d转换表列出了统一有序的翻译......在这种情况下,删除音调符号。我不熟悉希腊语变音符号的用法,因此可能需要扩展表格。

.replace('\u0301','')可以用于一种口音,但.translate()如果有多个替换,则效率更高。

跳过.upper()以匹配您的原始问题:

>>> ud.normalize('NFD',s).translate(d)
'? ???? ??????'
Run Code Online (Sandbox Code Playgroud)