1

Pythonを使用してテキストファイルの複数の行を更新する方法はありますか?2行の間のデータを削除したい私のテキストファイルは次のとおりです

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

cmdタグの間のすべてを削除したいので、結果のテキストファイルは次のようになります

Project
Post
<cmd>
</cmd>
Post
Lib
TargetMachine=MachineX86
Lib
Project
Post
<cmd>
</cmd>
Post
Lib
TargetMachine=MachineX64
Lib
4

1 に答える 1

4

ファイル全体を一度にメモリに読み込むことができると仮定すると、

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()))

それらに含まれるタグのみを一致xcopyさせるには、正規表現を少し拡張する必要があります。

import re
with open("input.txt") as infile, open("output.txt", "w") as outfile:
    outfile.write(re.sub(
        r"""(?sx)<cmd>      # Match <cmd>.
        (?:                 # Match...
         (?!</cmd>)         #  (unless we're at the closing tag)
         .                  #  any character
        )*                  # any number of times.
        \bxcopy\b           # Match "xcopy" as a whole word
        (?:(?!</cmd>).)*    # (Same as above)
        </cmd>              # Match </cmd>""", 
        "<cmd>\n</cmd>", infile.read())
于 2012-09-18T13:12:29.460 に答える