在PythonUnicode字符串中刪除重音的最佳方法是什么?我在Python中有一個Unicode字符串,我想刪除所有的重音(Diacritics)。我在Web上發現了一種用Java實現這一目標的優雅方法:將Unicode字符串轉換為它的長規范化形式(字母和數字符號有一個單獨的字符)刪除Unicode類型為“diacritic”的所有字符。我需要安裝像pyICU這樣的庫嗎?或者僅僅用python標準庫就可以了嗎?那蟒蛇3呢?重要注意事項:我想避免代碼從重音字符到非重音字符之間的顯式映射。
3 回答

米琪卡哇伊
TA貢獻1998條經驗 獲得超6個贊
import unicodedatadef strip_accents(s): return ''.join(c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn')
>>> strip_accents(u"A \u00c0 \u0394 \u038E")u'A A \u0394 \u03a5'>>>
Nonspacing_Mark

慕仙森
TA貢獻1827條經驗 獲得超8個贊
import unicodedatadef remove_accents(input_str): nfkd_form = unicodedata.normalize('NFKD', input_str) only_ascii = nfkd_form.encode('ASCII', 'ignore') return only_ascii
編輯
import unicodedatadef remove_accents(input_str): nfkd_form = unicodedata.normalize('NFKD', input_str) return u"".join([c for c in nfkd_form if not unicodedata.combining(c)])
unicodedata.combining(c)
c
編輯2: remove_accents
encoding = "utf-8" # or iso-8859-15, or cp1252, or whatever encoding you usebyte_string = b"café" # or simply "café" before python 3.unicode_string = byte_string.decode(encoding)
添加回答
舉報
0/150
提交
取消