Python:删除希腊变音符号/重音符号

时间:2020-07-14 13:12:00

标签: python string unicode string-formatting

是否有相对直接的方法可以从希腊字符串中删除变音符号?例如,如果字符串是“Οπάνωόροφος”,我希望它成为“οπανωοροφος”,但仍用希腊语,没有重音。我想避免使用字符串替换,因为它可能会很慢,并且大多数类似问题的答案都使用unidecode来将希腊字符转换为英语,而我则不需要。

1 个答案:

答案 0 :(得分:4)

大多数关于任何事物的官方论文都只需要大写而没有变音符号。

这行吗?

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

使用NFD进行归一化可以将基本代码点与变音符号分开。 d转换表列出了Unicode顺序转换...在这种情况下,删除了变音符号。我不熟悉希腊的变音符号用法,因此可能需要扩展表格。

.replace('\u0301','')可以用于一种重音,但是.translate()可以有效地替代多个重音。

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

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