删除标记之间的python中的行

时间:2015-09-17 13:44:17

标签: python

我有几个动态创建的配置文件,格式如下:

line1
line2
lines.....
# BEGIN TAG1
foo
foo
foo
# END TAG1
# BEGIN TAG2
bar
bar
bar
# END TAG2
lines
lines
lines

我需要删除BEGIN和END之间用于特定TAG的行(即:在BEGIN TAG1和END TAG1之间,我如何使用python执行此操作?。我之前使用sed执行此操作:

sed -n '/# BEGIN i-83/,/# END i-83/!p'

但我没有找到python的方式,我更喜欢不进行系统调用从python启动sed。

结果应该是这样的:

line1
line2
lines.....
# BEGIN TAG2
bar
bar
bar
# END TAG2
lines
lines
lines

祝你好运

1 个答案:

答案 0 :(得分:0)

你可以这样做,

with open(file) as f:
    m = True
    for line in f:
        if 'BEGIN TAG1' in line:
            m = False
        elif 'END TAG1' in line:
            m = True
            continue
        if m:
            print (line, end="")