使用pandas读取Excel后,json.dumps处理值出现多余转义字符问题
问题分析:json.dumps() 导致多余转义双引号的原因与解决方法
这问题我之前也碰到过,其实是json.dumps()的工作逻辑和你预期的不匹配导致的,咱们一步步拆解:
为什么会出现多余的转义?
你从Excel读取的something本身就是一个带双引号的字符串(比如"APPLE","BANANA")。而json.dumps()的核心作用是将Python对象转换为符合JSON规范的字符串:
- 当你传入一个字符串给它时,它会把这个字符串包装成JSON的字符串类型——也就是给整个内容加上外层双引号,同时对字符串内部的双引号用
\进行转义(这是JSON的强制规范,否则内部双引号会破坏JSON的结构边界)。 - 所以你看到的
"\"APPLE\","BANANA\""其实是JSON格式对原字符串的标准表示:外层双引号是JSON字符串的边界,内部的\"是原字符串里的双引号转义后的结果。
解决方法(分场景)
场景1:目标是生成JSON数组(推荐)
如果你希望输出的是["APPLE","BANANA"]这种标准的JSON数组,那需要先把Excel里的字符串转换成Python列表,再用json.dumps()处理:
for x in range(1,n): label = (df.columns[x]).strip() something = (df[df.columns[x]][i]) # 清理并转换为Python列表:分割字符串、去除引号和空白 item_list = [item.strip('" ').strip() for item in something.split(',')] value = json.dumps(item_list) print(label) print(value)
执行后输出会是:
productTypes ["APPLE","BANANA"]
完全符合JSON规范,没有多余转义。
场景2:只想原样输出原字符串
如果你的需求只是原封不动输出Excel里的内容,那根本不需要使用json.dumps(),直接打印something即可。
如果必须将这个值整合到更大的JSON结构中,但又坚持不转义内部引号(不推荐,会违反JSON规范),可以手动替换转义符:
value = json.dumps(something).replace('\\"', '"')
⚠️ 注意:这种方式生成的内容不符合JSON标准,后续解析时极大概率会报错,除非你确定下游系统能兼容这种非标准格式。
内容的提问来源于stack exchange,提问作者JubG
相关产品推荐
相关产品推荐

