假设我有一个包含以下单词的文本文件
a
b
c
d
e>
f
g
h
I>
j
每当我发现包含>
的单词时,我都希望替换掉它本身的最后两行。
例如,输出将是这样。
a
b
f
j
有可能实现这一目标吗?对于简单的替换,我可以做到
with open ('Final.txt', 'w') as f2:
with open('initial.txt', 'r') as f1:
for line in f1:
f2.write(line.replace('>', ''))
但是我仍然坚持如何返回并删除最后两行以及发生替换的行。
答案 0 :(得分:3)
这是一种使用简单迭代和列表切片的方法。
例如:
res = []
with open('initial.txt') as infile:
for line in infile:
if ">" in line:
res = res[:-2]
else:
res.append(line)
with open('Final.txt', "w") as f2:
for line in res:
f2.write(line)
输出:
a
b
f
j
答案 1 :(得分:2)
使用re
。
在这里,我假设您的数据是行的平面列表。
import re
print(re.sub('.*\n.*\n.*>\n','',''.join(data)))