24

我目前使用 re.findall 来查找和隔离字符串中哈希标签的“#”字符之后的单词:

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

它搜索 str1 并找到所有主题标签。这有效,但是它不考虑像这样的重音字符,例如:áéíóúñü¿.

如果其中一个字母在 str1 中,它将保存主题标签,直到它之前的字母。例如,#yogenfrüz将是#yogenfr.

我需要能够解释从德语、荷兰语、法语和西班牙语范围内的所有重音字母,以便我可以保存主题标签,例如#yogenfrüz

我该怎么做

4

3 回答 3

29

尝试以下操作:

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

正则表达式 101 演示

编辑 查看下面来自 Martijn Pieters 的有用评论。

于 2013-09-06T17:52:15.537 回答
6

我知道这个问题有点过时,但您也可以考虑将重音字符范围 À(索引 192)和 ÿ(索引 255)添加到原始正则表达式中。

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

这将返回['yogenfrüz']

希望这对其他人有帮助。

于 2021-05-12T08:00:08.363 回答
4

您可能还想使用

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?

于 2017-02-12T19:41:53.890 回答