我正在尝试在python中处理文本文件。文件结构看起来有点像这样:
info to process
info to process
START
...
END
info to process
START
...
END
我需要逐行处理文件(我使用简单的“for line in file”)但我还需要删除START和END之间的任何内容。
我在这里找到的最类似的问题是这一个here问题是:
我考虑添加变量,当它遇到START时将其设置为true,当它遇到END时将其设置为false并根据此变量保存输出,但这似乎是非常类似于python的方式来实现它。
我希望结束文件看起来像这样
Processed info
Processed info
Processed info
试试这个:
oldtext = '''info to process
info to process
START
...
END
info to process
START
...
END'''
newtext = re.sub(r"(?ms)^START$.*?^END$", "", oldtext)
有关演示,请参阅here。
就个人而言,我不明白你的意思是将你提出的解决方案描述为“非常不像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