如何在Python中考虑正则表达式的重音字符?

How to account for accent characters for regex in Python?

我目前使用re.findall来查找和隔离字符串中哈希标记的""字符后的单词:

1
hashtags = re.findall(r'#([A-Za-z0-9_]+)', str1)

它搜索str1并找到所有的hashtags。但是,它不能解释像这样的重音字符:áéíóú?ü?

如果这些字母中有一个在str1中,它将保存hashtag直到前面的字母。例如,#yogenfrüz就是#yogenfr

我需要能够解释所有重音字母,包括德语、荷兰语、法语和西班牙语,这样我可以保存像#yogenfrüz这样的哈希标签。

我该怎么做呢


试试下面的:

1
hashtags = re.findall(r'#(\w+)', str1, re.UNICODE)

regex101演示

编辑 有用的检查下面的评论从皮特斯马丁。


我想你可能也使用

1
2
import unicodedata
output = unicodedata.normalize('NFD', my_unicode).encode('ascii', 'ignore')

怎么在所有这些人物convert逃跑到他们各自的人物类的岩石,有个Unicode,在convert怎么到这一标准? 你有assume'载你到Unicode Unicode变量称为我的_…normalizing到,这是一个简单的……

进口unicodedata 输出unicodedata.normalize(NFD),我的_(Unicode).encode ASCII"、"别理) 明确的实例。

1
2
3
4
5
myfoo = u'àà'
myfoo
u'\xe0\xe0'
unicodedata.normalize('NFD', myfoo).encode('ascii', 'ignore')
'aa'

检查这一回答它帮助我很多:如何convert重音字符的Unicode字符的两个accents没有?