我的代码正在读取一个大的 csv 推文文件并将其解析为两个字典(取决于推文的情绪)。然后,我创建一个新字典并使用 HTML 解析器取消转义所有内容,然后使用 translate() 方法从文本中删除所有标点符号。
最后,我试图只保留大于 length = 3 的单词。
这是我的代码:
tweets = []
for (text, sentiment) in pos_tweets.items() + neg_tweets.items():
text = HTMLParser.HTMLParser().unescape(text.decode('ascii'))
remove_punctuation_map = dict((ord(char), None) for char in string.punctuation)
shortenedText = [e.lower() and e.translate(remove_punctuation_map) for e in text.split() if len(e) >= 3 and not e.startswith(('http', '@')) ]
print shortenedText
然而,我发现的是,虽然我想要的大部分内容都在完成,但我仍然得到长度为 2 的单词(但不是长度为 1),并且我的字典中有一些空白条目。
例如:
(: !!!!!! - so I wrote something last week
* enough said *
.... Do I need to say it?
产生:
[u'', u'wrote', u'something', u'last', u'week']
[u'enough', u'said']
[u'', u'need', u'even', u'say', u'it']
我的代码有什么问题?如何删除长度小于 2 的所有单词,包括空白条目?