我有一个巨大的推文csv文件。我将它们都读入计算机并将它们存储在两个单独的词典中 - 一个用于负面推文,一个用于正面。我想读取文件并将其解析为字典,同时删除任何标点符号。我用过这段代码:
tweets = []
for (text, sentiment) in pos_tweets.items() + neg_tweets.items():
shortenedText = [e.lower() and e.translate(string.maketrans("",""), string.punctuation) for e in text.split() if len(e) >= 3 and not e.startswith('http')]
print shortenedText
除了一个小问题,这一切都很好。我下载的巨大的csv文件遗憾地改变了一些标点符号。我不确定这叫什么,所以不能真正谷歌,但实际上有些句子可能会开始:
"ampampFightin"
""The truth is out there"
"&altThis is the way I feel"
有没有办法摆脱所有这些?我注意到后两个以&符号开头 - 将是一个简单的搜索摆脱它(我要求的唯一原因而不是因为有太多的推文供我手动检查)
答案 0 :(得分:3)
首先,unescape HTML entities,然后删除标点符号:
import HTMLParser
tweets = []
for (text, sentiment) in pos_tweets.items() + neg_tweets.items():
text = HTMLParser.HTMLParser().unescape(text)
shortenedText = [e.lower() and e.translate(string.maketrans("",""), string.punctuation) for e in text.split() if len(e) >= 3 and not e.startswith('http')]
print shortenedText
以下是unescape
如何运作的示例:
>>> import HTMLParser
>>> HTMLParser.HTMLParser().unescape(""The truth is out there")
u'"The truth is out there'
UPD:
UnicodeDecodeError
问题的解决方案:使用text.decode('utf8')
。 Here是一个很好的解释,为什么你需要这样做。