我正在处理我在选举期间挖掘的一些推文,我需要一种方法来从推文文本中提取主题标签,同时计算标点符号,非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'来排除它? 我也对其他不涉及正则表达式的解决方案持开放态度。
答案 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']