Python中字符串撇号替换为引号失效,求替代方法
解决Python字符串替换无变化问题,及INI文件参数统一引号的方案
哦,我太懂这个坑了!Python里的字符串是不可变对象,replace()方法并不会直接修改原字符串本身,而是返回一个完成替换操作的新字符串——这就是你运行代码后输出还是原内容的核心原因。
修正你的测试代码
只需要把replace()的返回值重新赋值给变量(可以覆盖原变量,也可以用新变量)就行:
e = "'03:SUN/05:00:00'" # 将替换后的新字符串赋值给原变量 e = e.replace("'", '"') print(e)
运行这段代码,控制台就会输出你想要的"03:SUN/05:00:00"了。
处理INI文件的更优方案
如果你的目标是统一整个INI文件里参数的引号格式,其实更推荐用Python内置的configparser库,它能自动处理INI里的单/双引号,避免手动替换可能踩的坑(比如字符串里包含转义引号的情况):
import configparser # 初始化配置解析器 config = configparser.ConfigParser() # 读取你的INI文件 config.read('your_config.ini') # 遍历所有section和key,统一引号格式 for section in config.sections(): for key in config[section]: # 获取原始值(configparser会自动去掉包裹的单/双引号) raw_value = config.get(section, key) # 统一用单引号包裹(或者双引号,看你需求) config[section][key] = f"'{raw_value}'" # 将修改后的内容写回文件 with open('formatted_config.ini', 'w') as f: config.write(f)
这个方法既安全又省心,不需要自己处理各种字符串边缘情况。
内容的提问来源于stack exchange,提问作者Jonas Schuster




