如何用Python仅替换文件中mid模块内的指定字符串
解决方案
可以通过标记当前是否处于目标模块的方式实现精准替换,只在Mod mid模块范围内替换指定字符串,具体逻辑如下:
- 遍历文件每一行,用一个布尔变量标记是否处于
mid模块内 - 当匹配到
Mod mid (o i)时,开启替换标记 - 当处于标记状态且匹配到
End时,关闭替换标记 - 仅在标记开启时,将行内的
a替换为z,其余行保持原样
完整代码实现
target_old = "a" target_new = "z" # 读取文件内容 with open('data.txt', 'r') as file: lines = file.readlines() processed_content = [] in_mid = False for line in lines: # 触发进入mid模块的标记 if line.strip() == 'Mod mid (o i)': in_mid = True processed_content.append(line) continue # 触发退出mid模块的标记 if in_mid and line.strip() == 'End': in_mid = False processed_content.append(line) continue # 根据标记状态决定是否替换 if in_mid: processed_content.append(line.replace(target_old, target_new)) else: processed_content.append(line) # 将处理后的内容写回文件 with open('data.txt', 'w') as file: file.writelines(processed_content) # 可选:打印结果验证 for line in processed_content: print(line, end='')
代码说明
- 用
with语句自动管理文件资源,无需手动调用close() - 通过
in_mid变量精准控制替换范围,不会误修改其他模块或全局内容 - 完全保留原文件的格式(包括空行、缩进),输出结构与需求一致
内容的提问来源于stack exchange,提问作者flash
相关产品推荐
相关产品推荐

