Python 2.7 匹配指定字符串模式替换内容并保存到原文件问题
问题排查
- 文件打开模式错误:使用只读模式
"r"打开文件,无法执行写入操作,需要改为读写模式"r+"。 - 正则匹配规则错误:默认情况下正则的
^和$仅匹配整个文本的开头和结尾,不会按行匹配,需要添加re.MULTILINE参数才能匹配每行的首尾。 - 特殊字符未转义:参数
parameter中的.在正则中是通配符,会匹配任意单个字符,需要先转义才能准确匹配字面量的点。 - 基础语法错误:
file_path = /tmp/dimension字符串路径没有加引号,with open(...)行末尾缺少冒号,会直接触发语法报错。 - 匹配逻辑不严谨:原正则全字匹配可能误命中注释、行中包含参数名的其他内容,直接匹配行开头的参数更准确。
修正后可运行代码
import re file_path = "/tmp/dimension" parameter = "art.range.field" value = 500 # 转义参数中的正则特殊字符 escaped_parameter = re.escape(parameter) with open(file_path, "r+") as file: file_content = file.read() # 增加re.MULTILINE标志实现按行匹配 new_content = re.sub( rf"^{escaped_parameter}\s*=\s*.*$", f"{parameter} = {value}", file_content, flags=re.MULTILINE ) file.seek(0) file.write(new_content) file.truncate()
内容的提问来源于stack exchange,提问作者Saswata Kar
相关产品推荐
相关产品推荐

