Поиск строк, содержащих два или более слов из списка

#python

#python

Вопрос:

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

 infile = open('/Path/#input.txt', 'r')
outfile = open('/Path/#output.txt', 'w')

# Read a textfile containing keywords to find
# (and strip the newline character 'n')
keywords = [line.strip() for line in open('Path/#keywords.txt')]

# See which lines in the infile match ALL of the keywords
# and write those lines to the outfile
for line in infile:
    if all(k in line for k in keywords):
        outfile.write(line)
  

Ответ №1:

Вот один из способов

 if len(set(line.split()).intersection(keywords)) > 2:
  

Это разбивает строку на слова с line.split() первым
. Затем использует функцию пересечения множеств для поиска общих элементов 2 наборов

Комментарии:

1. Я думаю, вам не хватает ) after split()

2. Извините, если я неправильно это понимаю, но является ли поиск общих элементов из 2 наборов тем же, что и поиск строк в файле infile, который содержит как минимум 2 слова из файла ключевых слов?

3. @textnet строка может быть интерпретирована как список слов (это делается .split() функцией), а список может быть преобразован в набор