Python写入文件时如何将/替换为\/?转义问题求解
解决JSON写入时URL的双重转义问题
你遇到的核心问题是手动转义了URL中的斜杠,而json.dump在序列化JSON数据时,会自动对斜杠/进行转义处理,这就导致了双重转义,最终写出的文件里出现\\\/。
根本原因
你原本的操作是把URL里的/手动替换成\/,但JSON规范里斜杠是可转义字符,json.dump默认会自动转义斜杠。手动转义+自动转义的叠加,就把\/变成了\\\/(因为反斜杠本身也会被转义)。
解决方案
完全不需要手动替换斜杠,直接把原始URL赋值给对应字段,让json.dump自动处理转义即可。
修正后的代码如下:
original_string = "https://stackoverflow.com/questions/" import json # 读取原有JSON文件 with open('url.json', 'r') as f: data = json.load(f) # 直接赋值原始URL,无需手动转义 data["website"]["url"] = original_string # 写入文件 with open("url.json", "w") as outfile: json.dump(data, outfile)
验证结果
运行这段代码后,url.json里的内容会变成符合预期的格式:
{"website": {"title": "stackoverflow", "url": "https:\/\/stackoverflow.com\/questions\/"}}
补充说明
之前用print输出结果正确,是因为Python打印字符串时会自动解析转义字符,把\/显示成/;但写入文件时json.dump会对字符串里的反斜杠再做一次转义,所以才出现了双重转义的问题。
内容的提问来源于stack exchange,提问作者nrnw
相关产品推荐
相关产品推荐

