如何用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
相关产品推荐
相关产品推荐

