You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python删除两个指定注释块之间的文本行?

Python脚本删除指定注释块间的内容

直接上实现代码和逻辑:

def remove_block(input_file, output_file, start_marker, end_marker):
    keep_lines = []
    in_block = False

    with open(input_file, 'r', encoding='utf-8') as f:
        for line in f:
            stripped_line = line.strip()
            # 碰到起始标记,开启删除模式
            if stripped_line == start_marker:
                in_block = True
                continue
            # 碰到结束标记,关闭删除模式
            if stripped_line == end_marker:
                in_block = False
                continue
            # 不在删除区块里的行,保留下来
            if not in_block:
                keep_lines.append(line)

    # 把保留的内容写入新文件
    with open(output_file, 'w', encoding='utf-8') as f:
        f.writelines(keep_lines)

# 调用示例,替换成你自己的文件路径
if __name__ == "__main__":
    remove_block(
        input_file="source.txt",
        output_file="result.txt",
        start_marker="## Start of Part 1",
        end_marker="## End of Part 1"
    )

逻辑说明

  • 用in_block变量标记当前是否处于要删除的区块内,初始为False(不删除)。
  • 逐行读取文件:
    • 遇到起始标记## Start of Part 1,打开删除开关,并且跳过这行。
    • 遇到结束标记## End of Part 1,关闭删除开关,同样跳过这行。
    • 没在删除区块里的行,全部保留下来。
  • 最后把保留的内容写入新文件,不会直接修改原文件(避免误操作)。

额外提示

  • 如果要直接修改原文件,可以写完临时文件后用os.replace()替换原文件。
  • 要是文件里有多个相同的Start/End区块,这个脚本会把所有符合条件的区块都删掉。
  • 如果某个起始标记后面找不到对应的结束标记,那从起始标记到文件末尾的内容都会被删除。

内容的提问来源于stack exchange,提问作者Molenpad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:20:57