有沒有一種相對簡單的方法可以從希臘字符串中刪除變音符號?例如,如果字符串是“Ο πανω ?ροφο?”,我希望它變成“ο πανω οροφο?”,仍然是希臘語,沒有重音。我想避免字符串替換,因為它可能很慢,而且大多數類似問題的答案都使用 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
提交
取消