簡體   English   中英

如何考慮 Python 中正則表達式的重音字符?

[英]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)

Regex101 演示

編輯檢查下面來自 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM