如何以不区分大小写的方式从列表中删除单词?

时间:2016-02-25 14:53:48

标签: python string list

我有一个名为words的列表,其中包含可能是大写或小写的单词,或者它们的某种组合。然后我有另一个名为stopwords的列表,其中只包含小写字。现在,我想查看stopwords中的每个单词,并以不区分大小写的方式从words中删除该单词的所有实例,但我不知道如何执行此操作。建议?

示例:

words = ['This', 'is', 'a', 'test', 'string']
stopwords = ['this', 'test']

for stopword in stopwords:
    if stopword in words:
        words.remove(stopword);

print words

显示的结果是:['This', 'is', 'a', 'string']

正确的回报应该是:['is', 'a', 'string']

1 个答案:

答案 0 :(得分:9)

让你的单词小写,这样你就不必担心套管:

words = ['This', 'is', 'a', 'test', 'string']
stopwords = {'this', 'test'}

print([i for i in words if i.lower() not in stopwords])

输出:

['is', 'a', 'string']

另外需要注意的是,根据@ cricket_007(并感谢@chepner进行更正)评论,将停用词设置为一组将使其更具性能。请注意上面的停用词的更改,使其成为集合而不是列表。