Проверить совпадение подстроки слова в списке слов - PullRequest
3 голосов
/ 26 ноября 2011

Я хочу проверить, есть ли слово в списке слов.

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 ]

9 голосов
/ 26 ноября 2011

Вы можете сделать:

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

Он проверяет каждое слово на совпадение и возвращает true, если есть совпадения

3 голосов
/ 26 ноября 2011

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 для имени переменной

0 голосов
/ 26 ноября 2011

Вы также можете создать одну строку поиска, объединив все слова в word_list в одну строку:

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

Тогда простой in тест выполнит работу:

return word in word_list 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...