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