有沒(méi)有一種相對(duì)簡(jiǎn)單的方法可以從希臘字符串中刪除變音符號(hào)?例如,如果字符串是“Ο πανω ?ροφο?”,我希望它變成“ο πανω οροφο?”,仍然是希臘語(yǔ),沒(méi)有重音。我想避免字符串替換,因?yàn)樗赡芎苈掖蠖鄶?shù)類似問(wèn)題的答案都使用 unidecode 將希臘字符轉(zhuǎn)換為英語(yǔ),我不希望這樣。
1 回答

手掌心
TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
大多數(shù)官方文件都需要只有大寫字母且沒(méi)有變音符號(hào)。
這行得通嗎?
>>> import unicodedata as ud
>>> s="Ο π?νω ?ροφο?"
>>> d = {ord('\N{COMBINING ACUTE ACCENT}'):None}
>>> ud.normalize('NFD',s).upper().translate(d)
'Ο ΠΑΝΩ ΟΡΟΦΟΣ'
使用 NFD 規(guī)范化將基本代碼點(diǎn)與變音符號(hào)分開(kāi)。翻譯d表列出了 Unicode 序數(shù)翻譯......在這種情況下,刪除變音符號(hào)。我不熟悉希臘變音符號(hào)的用法,因此可能需要擴(kuò)展該表。
.replace('\u0301','')可以用于一種重音,但.translate()如果有多個(gè)替換則效率更高。
跳過(guò).upper()以匹配您的原始問(wèn)題:
>>> ud.normalize('NFD',s).translate(d)
'Ο πανω οροφο?'
添加回答
舉報(bào)
0/150
提交
取消