用于从文本中提取主题标签的Python Regex表达式

时间:2016-11-16 00:19:09

标签: python regex twitter

我正在处理我在选举期间挖掘的一些推文,我需要一种方法来从推文文本中提取主题标签,同时计算标点符号,非unicode字符等,同时仍然在输出列表中保留主题标签。

例如,推文中的原始文本如下:

我和她在一起! #NeverTrump #DumpTrump#imwithher🇺🇸@ Williamsburg,Brooklyn

当在python中变成一个字符串(或者甚至放在这个网站上的代码块中)时,末尾附近的特殊字符会被更改,产生这个:

"I'm with HER! #NeverTrump #DumpTrump #imwithherdY\xd8\xa7dY\xd8, @ Williamsburg, Brooklyn"

现在我想将字符串解析为这样的列表:

['#NeverTrump','#DumpTrump', '#imwithher']

我目前正在使用这个表达式,其中str是上面的字符串:

tokenizedTweet = re.findall(r'(?i)\#\w+', str, flags=re.UNICODE)

然而,我将其作为输出:

['#NeverTrump', '#DumpTrump', '#imwithherdY\xd8']

我如何在我的正则表达式中考虑'dY \ xd8'来排除它? 我也对其他不涉及正则表达式的解决方案持开放态度。

1 个答案:

答案 0 :(得分:2)

是的,关于不涉及正则表达式的解决方案。 ;)

# -*- coding: utf-8 -*-
import string 
tweets = []

a = "I'm with HER! #NeverTrump #DumpTrump #imwithher🇺🇸 @ Williamsburg, Brooklyn"

# filter for printable characters then
a = ''.join(filter(lambda x: x in string.printable, a))

print a

for tweet in a.split(' '):
    if tweet.startswith('#'):
        tweets.append(tweet.strip(','))

print tweets

和tada:['#NeverTrump','#DumpTrump',' #imwithher']