Проверить список слов в другой строке

Я могу сделать это в python:

l = ['one', 'two', 'three'] if 'some word' in l: ... 

Это проверит, существует ли в списке слово «какое-то слово». Но могу ли я сделать обратное?

 l = ['one', 'two', 'three'] if l in 'some one long two phrase three': ... 

Я должен проверить, находятся ли некоторые слова из массива в строке. Я могу сделать это с помощью цикла, но у этого пути больше строк кода.

  • Профайлер Python по очереди?
  • SDK Google Диска не возвращает headRevisionId для формата документов Google
  • Сохранить raw_post_data в FileField с помощью Django
  • Извлечение транслятора комментарии с помощью xgettext из JavaScript (в режиме Python)
  • Как найти все возможные регулярные выражения в python?
  • Всесторонний учебник по Pyinstaller?
  • Как проверить XML-файл на DTD-файл в Python
  • Python для петель (новичок)
  • 4 Solutions collect form web for “Проверить список слов в другой строке”

     if any(word in 'some one long two phrase three' for word in list_): 

    Если ваш список слов имеет значительную длину, и вам нужно сделать этот тест много раз, может быть стоит преобразовать список в набор и использовать установленное пересечение для тестирования (с добавленной выгодой, чтобы вы получили фактические слова, которые в обоих списках):

     >>> long_word_list = 'some one long two phrase three about above along after against' >>> long_word_set = set(long_word_list.split()) >>> set('word along river'.split()) & long_word_set set(['along']) 

    Вот несколько альтернативных способов сделать это, что может быть быстрее или более подходящим, чем ответ KennyTM, в зависимости от контекста.

    1) используйте регулярное выражение:

     import re words_re = re.compile("|".join(list_of_words)) if words_re.search('some one long two phrase three'): # do logic you want to perform 

    2) Вы можете использовать наборы, если хотите совместить целые слова, например, вы не хотите находить слово «the» во фразе «теоретические теоремы»:

     word_set = set(list_of_words) phrase_set = set('some one long two phrase three'.split()) if word_set.intersection(phrase_set): # do stuff 

    Конечно, вы также можете выполнять целые словарные совпадения с регулярным выражением, используя токен «\ b».

    Выполнение этих и решения Кенни будет зависеть от нескольких факторов, таких как продолжительность слова и фраза, и как часто они меняются. Если производительность не является проблемой, переходите к самому простому, это, вероятно, Кенни.

    Самый простой и простой метод решения этой проблемы – использование re

     import re search_list = ['one', 'two', 'there'] long_string = 'some one long two phrase three' if re.compile('|'.join(search_list),re.IGNORECASE).search(long_string): #re.IGNORECASE is used to ignore case # Do Something if word is present else: # Do Something else if word is not present 
    Python - лучший язык программирования в мире.