#python #python-3.x #text
#python #python-3.x #текст
Вопрос:
У меня есть следующий код:
with open('file.txt', encoding="utf8") as inputFile:
data = inputFile.readlines()
inputFile.close()
for i, line in enumerate(data):
if any([x in line for x in ['nl']]):
with open("nl.txt", "w ") as nl:
nl.write(line)
if any([x in line for x in ['be']]):
with open("be.txt", "w ") as be:
be.write(line)
if any([x in line for x in ['pl']]):
with open("pl.txt", "w ") as pl:
pl.write(line)
if any([x in line for x in ['de']]):
with open("de.txt", "w ") as de:
de.write(line)
Этот код выполняет поиск ключевых слов в текстовом файле и, если он записывает всю строку в текстовый файл. Но по какой-то причине он останавливается после получения одного результата. Как я могу заставить его повторяться до тех пор, пока не будут проверены все строки в файле?
Комментарии:
1. Пожалуйста, предоставьте пример входного файла и вывода вашего кода.
Ответ №1:
Вы открываете файл в режиме w
перезаписи любого предыдущего содержимого, создавая иллюзию, что он находит только один результат. Измените свои строки с open
помощью like so, чтобы использовать режим a
:
with open('file.txt', encoding="utf8") as inputFile:
data = inputFile.readlines()
inputFile.close()
for i, line in enumerate(data):
if any([x in line for x in ['nl']]):
with open("nl.txt", "a ") as nl:
nl.write(line)
if any([x in line for x in ['be']]):
with open("be.txt", "a ") as be:
be.write(line)
if any([x in line for x in ['pl']]):
with open("pl.txt", "a ") as pl:
pl.write(line)
if any([x in line for x in ['de']]):
with open("de.txt", "a ") as de:
de.write(line)
Или вы даже можете оставить файлы открытыми во время выполнения цикла, что-то вроде:
with open("nl.txt", "w ") as nl:
for i, line in enumerate(data):
# Other code here