You need to enable JavaScript to run this app. Python中面向JSON处理的字符串转原始字符串 解决json解析报错
优惠活动
大模型
产品
解决方案
定价
更多

Python中面向JSON处理的字符串转原始字符串 解决json解析报错

报错核心原因
  • 代码靠手动字符串拼接拼出JSON结构,完全没有遵循JSON的转义规则处理文本里的特殊字符,拼出来的字符串本身就不符合JSON语法,自然会在json.loads的时候报“缺失逗号分隔符”的错误。这种手动拼JSON的写法天生就不稳定,只要输入文本里出现双引号、换行、反斜杠这类特殊内容,必然会崩。
  • 后续绕的拼字符串→json.loads转字典→str(字典)写文件的流程完全是无效冗余:哪怕解析不报错,写进文件的是Python字典的原生字符串表示,根本不是合规的可解析JSON,更达不到预期的缩进排版效果。
  • 直接用input当变量名会覆盖Python内置的input函数,属于容易埋坑的坏实践。
正确的实现逻辑

根本不需要手动拼任何JSON字符串,直接用Python自带的json模块做序列化就完事,模块会自动处理所有转义、格式排版的问题:

  1. 先导入json依赖
  2. 把要存储的内容直接构造为Python字典
  3. 用json.dump方法把字典直接写入目标文件,模块会自动输出标准格式的JSON

可直接运行的修正代码:

import json

# 避免覆盖内置函数名,原input变量改名为text_content
text_content = "You can check it out here. https://www.youtube.com/watch?v=Ay1gCPAUnxo&t=83s I'll send $20 in bitclout to the first 50 people that follow instructions at end of the video. This is revolutionary. Let's hope it works! <3Building it. What's up y'all"

def createJsonText(input_text):
    target = {"text": input_text}
    # 用with上下文管理器自动管理文件资源,不需要手动close
    # ensure_ascii=False 保留原文本的字符不转义为unicode编码
    # indent=2 实现两层缩进的JSON排版,和预期格式完全一致
    with open("tone.json", "w", encoding="utf-8") as f:
        json.dump(target, f, ensure_ascii=False, indent=2)

createJsonText(text_content)
修正后的效果
  • 生成的tone.json内容完全匹配预期格式,不会出现任何JSON语法错误
  • 不管输入的文本里包含什么特殊字符(双引号、换行、特殊符号),模块都会自动完成正确转义,不会再触发解析报错
  • 写入文件的是标准合规的JSON格式,不是Python字典的字符串表示

提醒:原来代码里用的是追加写入模式"a",如果反复运行会往同一个文件里叠加写入多段独立JSON,最终导致整个文件非法。如果不需要保留历史内容,用写入模式"w"覆盖即可。

内容的提问来源于stack exchange,提问作者Somdip Dey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 01:36:03