我有一个单词列表和一个像这样的字符串:
wordlist = ['fox', 'over', 'lazy']
paragraph = 'A quick brown fox jumps over the lazy fox.'
我想知道列表中的哪些单词出现在字符串中并返回它们。是否有一些相对聪明的方法来做到这一点?
例如,any(word in paragraph for word in wordlist)
仅返回True
或False
,但不会返回找到的实际字词。
答案 0 :(得分:4)
在列表理解中使用您的测试:
""
这将words_in_paragraph = [word for word in wordlist if word in paragraph]
生成器的测试移到了最后。
演示:
any()
请注意,就像您的>>> wordlist = ['fox', 'over', 'lazy']
>>> paragraph = 'A quick brown fox jumps over the lazy fox.'
>>> [word for word in wordlist if word in paragraph]
['fox', 'over', 'lazy']
>>> another_wordlist = ['over', 'foo', 'quick']
>>> [word for word in another_wordlist if word in paragraph]
['over', 'quick']
测试一样,此部分字的工作也会匹配,当然:
any()
答案 1 :(得分:1)
您可以使用过滤器
included_words = filter(lambda word: word in paragraph, wordlist)
虽然在python3中,这会产生一个迭代器,所以如果你想要一个列表使用列表理解方法(或者如果你愿意,你可以在过滤结果上调用list),否则迭代器就可以了。
included_words = list(filter(lambda word: word in paragraph, wordlist))
OR
included_words = [word for word in wordlist if word in paragraph]