Как сохранять все строки, а не только первую?

Имеется два файла, file_1 на ±2000 строк, file_2 ~100 строк (стоп слова). Пробую сохранить в файл result только строки без стоп слов, но сохраняет только первую строку, помогите разобраться.

file_with_keys = open('file_1.txt', 'r', encoding='utf-8')
my_keys = open('file_2.txt', 'r', encoding='utf-8')
result_file = open('result.txt', 'w', encoding='utf-8')

for line in file_with_keys:
    for line_2 in my_keys:
        if any([line_2 not in line for line_2 in my_keys]):
            result_file.write(line)

print('Готово!')

Ответы (2 шт):

Автор решения: Elusha

Если я всё правильно понял, то так:

file1 = open('file1.txt', 'r')
file2 = open('file2.txt', 'r')
file_res = open('file_res.txt', 'w')

stopwords = []
for line in file2.readlines():
    stopwords.append(line.strip())

for phrase in file1:
    for i in phrase.split():
        if i in stopwords:
            break
    else:
        file_res.write(phrase)



file1.close()
file2.close()
file_res.close()

Остальное, я думаю понятно

→ Ссылка
Автор решения: CrazyElf

В вашем коде минимум две проблемы:

  • Когда вы перебираете строки из файла и он заканчивается, вы не можете перебирать его следующий раз на следующей итерации цикла, потому что файл уже закончился. Надо или открывать второй файл каждый раз заново, или лучше считать из него всё в список и дальше итерироваться по этому списку, а не по файлу.
  • У вас лишний второй цикл for по my_keys, вы ведь и так делаете точно такой же цикл по my_keys внутри проверки if any (только в виде list comprehension), отдельный цикл for по my_keys просто лишний.
→ Ссылка