Удаление полных строк текста в текстовом файле (на Python) - PullRequest
0 голосов
/ 03 июля 2018

Я работаю с выходным файлом журнала, который содержит 12 тысяч строк кода, большинство из которых включают в себя что-то похожее на это:

"760.0132   EXP     window1: blendMode = 'avg'" 

Моя цель - полностью удалить любую строку, имеющую "EXP window1: blendMode = 'avg'". Я могу удалить этот текстовый бит из всех строк, где он найден, но не из числа. Это код, который я использовал для удаления битов текста (заимствован из другого вопроса / ответа о переполнении стека):

infile = "01_Day1_run1.txt"
outfile = "01_Day1_run1_cleaned.txt"

delete_list = ["    EXP     window1: blendMode = 'avg'"]

fin = open(infile)
fout = open(outfile, "w+")
for line in fin:
for word in delete_list:
    line = line.replace(word, "")
fout.write(line)

fin.close()
fout.close()

Я надеялся, что смогу добавить что-то вроде

delete_list = ["1**.****    EXP     window1: blendMode = 'avg'"]

, чтобы удалить любое число, включающее весь текст, а также любое число в этой строке, но, похоже, оно не работает. Будем весьма благодарны за любые советы о том, как лучше всего очистить файл журнала.

Большое спасибо, Simon

Ответы [ 3 ]

0 голосов
/ 03 июля 2018
infile = "01_Day1_run1.txt"
outfile = "01_Day1_run1_cleaned.txt"

delete_string = "EXP     window1: blendMode = 'avg'"

fin = open(infile)
fout = open(outfile, "a")
for line in fin.readLines():
    if delete_list not in line:
        fout.write(line)

fin.close()
fout.close()
0 голосов
/ 03 июля 2018

Почему вы хотите сделать это с помощью Python? Вы можете сделать это с помощью простого grep -v или findstr /V, как в следующем примере:

Prompt>grep -v "blendmode" input.txt >output.txt
0 голосов
/ 03 июля 2018
infile = "01_Day1_run1.txt"
outfile = "01_Day1_run1_cleaned.txt"

delete_list = ["    EXP     window1: blendMode = 'avg'"]

fin = open(infile)
fout = open(outfile, "a")
for line in fin:
    for word in delete_list:
        if word in line:
            wordCheck = False
            break
        else:
            wordCheck = True
    if wordCheck:
        fout.write(line)

fin.close()
fout.close()

Может быть чище:

with open("01_Day1_run1.txt", "r") as infile, open("01_Day1_run1_cleaned.txt", "a") as outfile:
    for line in infile:
        if not any(filter in line for filter in delete_list ):
            outfile.write(line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...