Python - удаление фрагментов из файлов с идентификатором - PullRequest
0 голосов
/ 13 марта 2020

Пример: у меня есть файл (1.txt) и следующее содержимое:

1 - a
2 - ERROR
3 - b
4 - ERROR
5 - c
6 - ERROR
7 - d
8 - ERROR

, и я хотел бы создать новый_1.txt с:

1 - a
5 - c

Как видите, в качестве идентификатора у меня есть слово ОШИБКА, что означает: всегда, когда Python находит слово «ОШИБКА», он ищет другое слово «ОШИБКА» и удаляет фрагмент строки в файле. И так до конца файла. Таким образом, будут удалены строки от 2 до 4, а также строки от 6 до 8.

Мой код просто удаляет строки, содержащие слово ERROR, но мне нужно удалить фрагменты.

bad_words = "ERROR"
with open("1.txt") as oldfile, open("new_1.txt", 'w') as newfile:
   for line in oldfile:
       if not any(bad_word in line for bad_word in bad_words):
           newfile.write(line)

Я очень ценю ваши ответы!

1 Ответ

1 голос
/ 13 марта 2020

Попробуйте:

bad_words = "ERROR"
file_name = "1.txt"
with open(file_name) as oldfile, open('new_'+file_name, 'w') as newfile:
    error_found = False
    for line in oldfile:
        if bad_words in line:
            error_found = error_found ^ True
            continue
        if not error_found:
            newfile.write(line)

Используя оператор ^ (xor), вы переключите значение переменной error_found , а затем отметите, записывать или нет в новый файл.

...