在Python 3中,我希望能夠以「不區分重音」的方式使用re.sub()
,正如我們可以使用re.I
標誌進行不區分大小寫的替換一樣。Python中對變音不敏感替換的正則表達式
可能會像re.IGNOREACCENTS
標誌:
original_text = "¿It's 80°C, I'm drinking a café in a cafe with Chloë。"
accent_regex = r'a café'
re.sub(accent_regex, 'X', original_text, flags=re.IGNOREACCENTS)
這將導致「¿這是80°C,我在喝與CHLOE X X」(注意,仍然是一個重音放在「 Chloë「),而不是」¿這是80°C,我在Chloë的一家咖啡館喝了X「,在真正的蟒蛇中。
我認爲這樣的標誌不存在。那麼做這件事最好的選擇是什麼?在original_text
和accent_regex
上使用re.finditer
和unidecode
,然後通過拆分字符串來替換?或者用其重音變體修改accent_regex
中的所有字符,例如:r'[cç][aàâ]f[éèêë]'
?
'可能是類似...'@WiktorStribiżew – revo
你正在尋找的是一個等價類 - 雖然我不知道任何支持它們的Python正則表達式模塊。語法通常就像'[[= a =]]' –