从列表中删除不包含某些单词的字符串?

时间:2014-03-11 22:27:53

标签: python string list

例如类似的东西(尽管它不起作用):

list1 = ['hello, how are you?', 'well, who are you', 'what do you want']

desiredwords = ['hello', 'well']

list2 = [x for x in list1 if any(word in list1 for word in desiredwords) in x]

print list2

['hello, how are you?', 'well, who are you'] #Desired output

任何人都知道怎么做?

1 个答案:

答案 0 :(得分:2)

您在错误的生成器表达式上调用any。你想要:

list2 = [x for x in list1 if any(word in x for word in desiredwords)]

这里的区别在于,在您的问题中,您要评估所需单词列表中的任何单词是否为list1的成员(他们不是),然后测试{是否{ {1}}(False来电的输出)位于您正在测试的any元素中。这当然不起作用。

我的list版本会根据所考虑的元素检查所需单词列表中的单词,使用any的输出来过滤列表。

请注意,any对字符串进行子字符串匹配 - 这种方法将计算" oilwell"作为匹配"井"。如果你想要这种行为,那很好。如果没有,就会变得更难。