#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()
функцией), а список может быть преобразован в набор