[英]How to account for accent characters for regex in Python?
我目前使用 re.findall 來查找和隔離字符串中哈希標簽的“#”字符之后的單詞:
hashtags = re.findall(r'#([A-Za-z0-9_]+)', str1)
它搜索 str1 並找到所有主題標簽。 這有效,但是它不考慮像這些重音字符,例如: áéíóúñü¿
。
如果這些字母之一在 str1 中,它將保存主題標簽直到它之前的字母。 例如, #yogenfrüz
將是#yogenfr
。
我需要能夠解釋所有重音字母,包括德語、荷蘭語、法語和西班牙語,以便我可以保存#yogenfrüz
等主題標簽
我該怎么做
請嘗試以下操作:
hashtags = re.findall(r'#(\w+)', str1, re.UNICODE)
編輯檢查下面來自 Martijn Pieters 的有用評論。
您可能還想使用
import unicodedata
output = unicodedata.normalize('NFD', my_unicode).encode('ascii', 'ignore')
我如何將所有這些轉義字符轉換為它們各自的字符,例如如果有一個 unicode à,我如何將其轉換為標准 a? 假設您已將 unicode 加載到名為 my_unicode 的變量中……將 à 規范化為 a 就是這么簡單……
import unicodedata output = unicodedata.normalize('NFD', my_unicode).encode('ascii', 'ignore') 顯式示例...
myfoo = u'àà'
myfoo
u'\xe0\xe0'
unicodedata.normalize('NFD', myfoo).encode('ascii', 'ignore')
'aa'
檢查這個答案它對我有很大幫助: 如何將 unicode 重音字符轉換為沒有重音的純 ascii?
我知道這個問題有點過時,但您也可以考慮將重音字符 À(索引 192)和 ÿ(索引 255)的范圍添加到原始正則表達式中。
hashtags = re.findall(r'#([A-Za-z0-9_À-ÿ]+)', str1)
這將返回['yogenfrüz']
希望這會幫助其他人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.