如何在句子列表中精确匹配指定单词,避免部分匹配?
如何在句子列表中精确匹配特定单词
问题场景
我需要在句子组成的字符串列表中,精确匹配包含特定单词的句子。举个实例:
- 目标单词:
'correct' - 句子列表:
['this is correct', 'this is corrected', 'stingray for dinner']
预期结果仅匹配第一个句子,但使用以下代码时,会误将包含子串的第二个句子也纳入结果:
a = [i for i in list if word in i]
得到的结果是 ['this is correct', 'this is corrected'],不符合我需要的 ['this is correct']。
补充说明:我的列表规模较大,后续还需要分别找出包含'corrected'等其他单词的句子。
问题原因
原代码的逻辑是判断目标单词是否为句子的子串,而非精确匹配独立单词。因此像'corrected'这类包含'correct'的单词会被误判为匹配。
解决方案
通过将句子按空格拆分为独立单词,再检查其中是否存在与目标单词完全相等的项,实现单词级别的精确匹配。代码如下:
target_word = "correct" sentence_list = ['this is correct', 'this is corrected', 'stingray for dinner'] answer = [sentence for sentence in sentence_list if any(target_word == word for word in sentence.split(' '))]
执行后得到的结果为 ['this is correct'],完全符合预期。后续匹配其他单词时,只需修改target_word的值即可复用该逻辑。
内容的提问来源于stack exchange,提问作者lucassculp
相关产品推荐
相关产品推荐

