如何使用Python替换指定字符(等号)后的字符串内容
实现逻辑
- 先定义键值替换映射表:只需要指定需要修改的键名和对应的目标新值,不需要匹配原有值
- 用正则表达式匹配含等号的行,捕获「等号及之前的所有内容(保留原有缩进、空格、键名格式)」,直接替换等号后的全部内容
- 无等号的行(比如开头的配置块声明、结尾的大括号行)直接原样保留,不会破坏原有文件结构
代码实现
import re # 自定义替换规则:键是等号前的参数名,值是要替换的目标内容 replace_map = { "Serial": "22330011", "IP": "1.1.1.1", "User": "User_11" } # 替换为你的实际文件路径 file_path = "test.conf" # 读取并处理文件内容 with open(file_path, 'r', encoding='utf-8') as f: lines = f.readlines() new_lines = [] for line in lines: # 正则匹配:捕获等号前的所有内容(含缩进、键名、等号前后的空格、等号) match_res = re.match(r'^(\s*(\w+)\s*=).*$', line) if match_res and match_res.group(2) in replace_map: # 保留原有前缀格式,替换等号后的内容 new_line = f"{match_res.group(1)} {replace_map[match_res.group(2)]}\n" new_lines.append(new_line) else: # 不匹配的行原样保留 new_lines.append(line) # 写回文件 with open(file_path, 'w', encoding='utf-8') as f: f.writelines(new_lines)
补充说明
- 如果要修改其他参数,直接在
replace_map里加对应键值对即可,不需要调整其他逻辑 - 正则自动保留原有行的缩进、键和等号之间的空格,修改后不会破坏原文件的排版格式
- 自动跳过没有等号、或者不在替换映射表里的行,不会误改其他配置
内容的提问来源于stack exchange,提问作者umer
相关产品推荐
相关产品推荐

