У меня есть текстовый файл:Удаление конкретных строк из текстового файла
>E8|E2|E9D
Football is a good game
Its good for health
you can play it every day
>E8|E2|E10D
Sequence unavailable
>E8|E2|EKB
Cricket
>E87|E77|E10D
Sequence unavailable
>E27|E97|E10D
Sequence unavailable
>E8|E2|E9D
Sequence unavailable
Я написал следующий код для обнаружения Sequence unavailable
из этого файла и удалить его:
with open('input.txt') as f1, open('output.txt', 'w') as f2,\
open('temp_file','w') as f3:
lines = [] # store lines between two `>` in this list
for line in f1:
if line.startswith('>'):
if lines:
f3.writelines(lines)
lines = [line]
else:
lines.append(line)
elif line.rstrip('\n') == 'Sequence unavailable':
f2.writelines(lines + [line])
lines = []
else:
lines.append(line)
f3.writelines(lines)
os.remove('input.txt')
os.rename('temp_file', 'input.txt')
Но то, что я на самом деле хочу что я удаляю все доступные последовательности для заданного вопроса (последний столбец строк >
).
Например, даже если есть строки, следующие E9D
, если есть другой вход для E9D
с Sequence unavailable
нет записей должны быть записаны в выходной файл:
input.txt
>E8|E2|E9D
Football is a good game
Its good for health
you can play it every day
>E8|E2|E10D
Sequence unavailable
>E8|E2|EKB
Cricket
>E87|E77|E10D
Sequence unavailable
>E27|E97|E10D
Sequence unavailable
>E8|E2|E9D
Sequence unavailable
выход. txt
>E8|E2|EKB
Cricket
У нас есть только вопрос EKB
.
Спасибо @Martijn Pieters, чтобы это было легко понять – Rocket