regex - 使用正则表达式从 Twitter 数据中提取 "mentions"的问题

标签 regex pandas

我正在尝试从 Twitter 中提取推文中的提及,即 @Google@Apple

到目前为止,这是我的代码,用于从列中提取提及项,然后使用提及项创建另一个列。

df_bdtu['mentions'] = df_bdtu['tweet_text'].str.findall('(?:^|\s)[@ @]{1}([^\s#<>[\]|{}]+)')

大部分情况下它都能正常工作,但我在某些边缘情况下遇到了一些问题,例如以这条推文为例:

Check out @Dreams_n_Songs and give them a follow! I can't recommend their hoodies enough!Shop now  👉… 

存储在下方 mentions 列中的提及是不正确的,因为它出于某种原因包含表情符号。

['Dreams_n_Songs', '👉…']

另一个问题是在提及之前有一个 .,例如这个例子:

.@ChelseaFC, @FCBayern, @VfL_Wolfsburg and more are among the latest names to be confirmed at -…

产生的提及不包括第一次提及。

[FCBayern,, VfL_Wolfsburg]

我该如何修复这个正则表达式?

最佳答案

你可以使用

[@@]([^][\s#<>|{}]+)

参见 regex demo .因此,删除 (?:\s|^) 需要字符串的开头或匹配开始处的空格,并且您需要从 [@@ ] 字符类。

在 Pandas 代码中,你可以这样使用它:

df_bdtu['mentions'] = df_bdtu['tweet_text'].str.findall(r'[@@]([^][\s#<>|{}]+)')

注意 r'...' 原始字符串文字表示法。

关于regex - 使用正则表达式从 Twitter 数据中提取 "mentions"的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66028983/

相关文章:

python - 每行最小值,Python Pandas

java - 比较 Reg Ex 模式的集合

javascript - 有人可以给我一个示例 JavaScript RegEx 来使输入的 2 个重复字符无效吗

javascript - 正则表达式确定网站根目录

C# 正则表达式需要字符串匹配模式

python - 选定行的 Pandas 数据框聚合

Java正则表达式仅字符串开头

python - 为什么 pandas 不创建 Excel 文件?

包含 NaN 值的 python pandas 直方图图

python - 使用 pandas 部分取消透视表