在python中更新文本文件的多行

在python中更新文本文件的多行,python,Python,有没有办法用python更新文本文件的多行。我想删除两行之间的数据我的文本文件如下 Project Post <cmd> ---Some statements-- ---Some statements--- Mycommand "Sourcepath" "DestPath" </cmd> Post Lib TargetMachine=MachineX86 Lib Project Post <cmd> ---Some statements--- ---S

有没有办法用python更新文本文件的多行。我想删除两行之间的数据我的文本文件如下

Project
Post
<cmd> ---Some statements--
  ---Some statements---
Mycommand "Sourcepath" "DestPath"
</cmd>
Post
Lib
TargetMachine=MachineX86
Lib
Project
Post
<cmd> ---Some statements---
  ---Some statements---
Mycommand "Sourcepath" "DestPath"
</cmd>
Post
Lib
TargetMachine=MachineX64
Lib
Project
Post
<cmd>
</cmd>
Post
Lib
TargetMachine=MachineX86
Lib
Project
Post
<cmd>
</cmd>
Post
Lib
TargetMachine=MachineX64
Lib
项目
邮递
---一些声明--
---一些声明---
Mycommand“源路径”“目标路径”
邮递
解放党
TargetMachine=MachineX86
解放党
项目
邮递
---一些声明---
---一些声明---
Mycommand“源路径”“目标路径”
邮递
解放党
TargetMachine=MachineX64
解放党
我想删除cmd标记之间的所有内容。因此,生成的文本文件应如下所示

Project
Post
<cmd> ---Some statements--
  ---Some statements---
Mycommand "Sourcepath" "DestPath"
</cmd>
Post
Lib
TargetMachine=MachineX86
Lib
Project
Post
<cmd> ---Some statements---
  ---Some statements---
Mycommand "Sourcepath" "DestPath"
</cmd>
Post
Lib
TargetMachine=MachineX64
Lib
Project
Post
<cmd>
</cmd>
Post
Lib
TargetMachine=MachineX86
Lib
Project
Post
<cmd>
</cmd>
Post
Lib
TargetMachine=MachineX64
Lib
项目
邮递
邮递
解放党
TargetMachine=MachineX86
解放党
项目
邮递
邮递
解放党
TargetMachine=MachineX64
解放党

我建议,假设您可以一次性将整个文件读入内存

import re
with open("input.txt") as infile, open("output.txt", "w") as outfile:
    outfile.write(re.sub(r"(?s)<cmd>.*?</cmd>", "<cmd>\n</cmd>", infile.read()))

我建议,假设您可以一次性将整个文件读入内存

import re
with open("input.txt") as infile, open("output.txt", "w") as outfile:
    outfile.write(re.sub(r"(?s)<cmd>.*?</cmd>", "<cmd>\n</cmd>", infile.read()))

感谢tim的快速回复,如果我只想删除包含“xcopy”字符串的cmd之间的数据,该怎么办请注意,这不会正确处理嵌套标记,但是它看起来不需要,所以应该很好。谢谢你,蒂姆,非常感谢。你节省了我的时间:-)嗨,蒂姆·皮茨克,还有一个疑问。在某些情况下,我必须匹配XCOPY.ie,我必须对XCOPY和XCOPY都执行上述过程。我尝试了re.IGNORECASE,但它没有使用
(?isx)
,而不是
(?sx)
在正则表达式的开头。感谢tim的快速响应。如果我只想删除包含“xcopy”字符串的cmd之间的数据,该怎么办注意这不会正确处理嵌套标记,但是它看起来不需要,所以应该很好。谢谢你,蒂姆,非常感谢。你节省了我的时间:-)嗨,蒂姆·皮茨克,还有一个疑问。在某些情况下,我必须匹配XCOPY.ie,我必须对XCOPY和XCOPY都执行上述过程。我尝试了re.IGNORECASE,但它没有使用
(?isx)
,而不是
(?sx)
在正则表达式的开头。