我正在尝试使用python处理文本文件。文件结构看起来像这样:
info to process
info to process
START
...
END
info to process
START
...
END
我需要逐行处理文件(为此,我正在使用简单的“用于文件中的行”),但是我还需要删除START和END之间的所有内容。
我在这里发现的最相似的问题就是这个here 问题是:
我考虑过添加变量,在遇到START时将其设置为true,当遇到END时将其设置为false并基于此变量保存输出,但这似乎不是Python般的实现方式。
我希望最终文件看起来像这样
Processed info
Processed info
Processed info
答案 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