检查单词列表中单词的子字符串匹配

时间:2011-11-26 00:31:21

标签: python substring string-matching

我想检查某个单词是否在单词列表中。

word = "with"
word_list = ["without", "bla", "foo", "bar"]

我尝试了if word in set(list),但由于事实in匹配字符串而不是项目,因此不会产生想要的结果。也就是说,"with"word_list中的任何字词匹配,但if "with" in set(list)仍然会True

执行此检查的简单方法是手动迭代list

3 个答案:

答案 0 :(得分:9)

你可以这样做:

found = any(word in item for item in wordlist)

它检查每个单词是否匹配,如果匹配则返回true

答案 1 :(得分:3)

in正在按预期运行完全匹配

>>> word = "with"
>>> mylist = ["without", "bla", "foo", "bar"]
>>> word in mylist
False
>>> 

您也可以使用:

milist.index(myword)  # gives error if your word is not in the list (use in a try/except)

milist.count(myword)  # gives a number > 0 if the word is in the list.

但是,如果您正在寻找子串,那么:

for item in mylist:
    if word in item:     
        print 'found'
        break

顺便说一下,不要使用list作为变量的名称

答案 2 :(得分:0)

您还可以通过将word_list中的所有单词连接成一个字符串来创建单个搜索字符串:

word = "with" 
word_list = ' '.join(["without", "bla", "foo", "bar"])

然后一个简单的in测试将完成这项工作:

return word in word_list