Как сохранять все строки, а не только первую?
Имеется два файла, 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просто лишний.