有没有一种相对简单的方法可以从希腊字符串中删除变音符号?例如,如果字符串是“Ο πανω όροφος”,我希望它变成“ο πανω οροφος”,仍然是希腊语,没有重音。我想避免字符串替换,因为它可能很慢,而且大多数类似问题的答案都使用 unidecode 将希腊字符转换为英语,我不希望这样。
1 回答

手掌心
TA贡献1942条经验 获得超3个赞
大多数官方文件都需要只有大写字母且没有变音符号。
这行得通吗?
>>> 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)
'Ο πανω οροφος'
添加回答
举报
0/150
提交
取消