Python:在带有关键字的行之间搜索文本

时间:2019-03-26 02:13:54

标签: python regex

我正在尝试使用python处理文本文件。文件结构看起来像这样:

info to process
info to process
START
...
END
info to process
START
...
END

我需要逐行处理文件(为此,我正在使用简单的“用于文件中的行”),但是我还需要删除START和END之间的所有内容。

我在这里发现的最相似的问题就是这个here 问题是:

  1. 这确实会搜索整个文件。我需要逐行处理
  2. 这不是python代码,作为一个新手,我无法翻译

我考虑过添加变量,在遇到START时将其设置为true,当遇到END时将其设置为false并基于此变量保存输出,但这似乎不是Python般的实现方式。

我希望最终文件看起来像这样

Processed info
Processed info

Processed info

2 个答案:

答案 0 :(得分:1)

尝试一下:

oldtext = '''info to process
info to process
START
...
END
info to process
START
...
END'''

newtext = re.sub(r"(?ms)^START$.*?^END$", "", oldtext)

有关演示,请参见here

答案 1 :(得分:1)

就我个人而言,我不理解将提议的解决方案描述为“非常不像python一样”的意思。

我按照以下方式实施了您的建议,并获得了预期的结果:

with open('test.txt', 'r') as f_orig, open('test2.txt', 'w') as f_new:
    for line in f_orig:
        if line[:5] == 'START':
            skipping = True
        if not skipping:
            f_new.write(line)
        if line[:3] == 'END':
            skipping = False