我正在我的列表上运行一个包含字典查找的函数,所以我需要删除所有非字典单词,因为如果不这样做,我会收到一个键错误。我不能只使用“继续”因为我不是在循环中这样做。我不认为我有很多,所以如果必须,我可以一个接一个地做(虽然我不愿意)。列表中的对象都是unicode,这使得删除它们变得更加困难。
我的列表如下所示:
my_list:
[[u'stuff',
u'going',
u'moment',
u'mj',
u've',
u'started',
u'listening',
u'music'
等...
或者,如果我这样称呼我得到一个支架:
my_list[0]:
[u'stuff',
u'going',
u'moment',
u'mj',
u've',
u'started',
u'listening',
u'music',
等...
我尝试过这样的事情:
my_list.remove("mj")
和
my_list.remove("u'mj'")
和
my_list.remove[0,3]
有什么想法吗?感谢
编辑:对凯文的回应: 这是我如何获得数据的方式
my_list = []
for review in train["review"]:
my_list.append(review_to_wordlist(review, remove_stopwords=True))
,功能在这里:
def review_to_wordlist(review, remove_stopwords=False):
#remove html
review_text = BeautifulSoup(review).get_text()
#remove non-letters
#possibly update this later to include numbers?
review_text = re.sub("[^a-zA-Z]"," ", review_text)
#convert words to lower case and split
words = review_text.lower().split()
if remove_stopwords:
stops = set(stopwords.words("english"))
words = [w for w in words if not w in stops]
return(words)
答案 0 :(得分:1)
你很亲密。问题不在于unicode,而是在外部列表上调用remove
。由于您的文本列表是列表中的列表,因此您需要从中删除。
请改为:
my_list[0].remove('mj')
你也可以将它作为unicode字符串加前缀(在这种情况下结果相同):
my_list[0].remove(u'mj')
示例:
my_list = [[u'stuff',
u'going',
u'moment',
u'mj',
u've',
u'started',
u'listening',
u'music'
]]
my_list[0].remove('mj')
print my_list
输出:
[[u'stuff', u'going', u'moment', u've', u'started', u'listening', u'music']]
请注意,字符串mj
已删除。
答案 1 :(得分:1)
您提到您使用该列表进行密钥查找。
只需在代码中添加以下行,以避免产生错误:
if dict.has_key(list_item):
# do your lookup
避免错误。