如果找到某些特定的单词,请删除特定的行

时间:2018-12-21 10:42:15

标签: python python-3.x

假设我有一个包含以下单词的文本文件

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('>', ''))

但是我仍然坚持如何返回并删除最后两行以及发生替换的行。

2 个答案:

答案 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)))