Python:使用关键字在行之间搜索文本

问题描述 投票:1回答:2

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

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

我需要逐行处理文件(我使用简单的“for line in file”)但我还需要删除START和END之间的任何内容。

我在这里找到的最类似的问题是这一个here问题是:

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

我考虑添加变量,当它遇到START时将其设置为true,当它遇到END时将其设置为false并根据此变量保存输出,但这似乎是非常类似于python的方式来实现它。

我希望结束文件看起来像这样

Processed info
Processed info

Processed info

python regex
2个回答
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
投票

就个人而言,我不明白你的意思是将你提出的解决方案描述为“非常不像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
© www.soinside.com 2019 - 2024. All rights reserved.