如何将格式异常的JSON字符串转换为Python字典?
解决不合法JSON字符串的解析问题
遇到这种内部双引号未正确转义的JSON字符串确实挺闹心,下面给你两个实用的解决方案:
方法一:正则修复后用标准库解析
问题核心在于字符串值里的双引号没转义,我们可以用正则识别并替换那些不属于JSON结构边界的双引号,把不合法字符串转成标准JSON后再解析。
代码示例:
import re import json # 你拿到的不合法JSON字符串 bad_json = '{"ConsignorName": "first part "second part""}' # 正则替换逻辑:只转义值内部未转义的双引号 # 匹配规则:前面无反斜杠,且后面不是JSON结构符号(:、,、{、})或字符串结尾的双引号 fixed_json = re.sub(r'(?<!\\)"(?!:|,|{|}|$)', r'\\"', bad_json) # 现在可以正常解析了 parsed_dict = json.loads(fixed_json) print(parsed_dict) # 输出: {'ConsignorName': 'first part "second part"'}
这个正则在大多数类似场景下都能生效,如果你的JSON有更复杂的嵌套或特殊字符,可能需要微调正则规则。
方法二:用容错性更强的第三方解析库
要是不想自己折腾字符串修复,直接用支持宽松格式JSON的第三方库就行,比如json5,它能兼容很多不符合严格JSON规范的写法。
步骤如下:
- 先安装库:
pip install json5
- 解析代码:
import json5 bad_json = '{"ConsignorName": "first part "second part""}' parsed_dict = json5.loads(bad_json) print(parsed_dict) # 同样得到目标字典
json5还支持单引号键值、末尾逗号等不规范写法,特别适合处理这类来自第三方的不标准JSON。
内容的提问来源于stack exchange,提问作者benbro00002
相关产品推荐
相关产品推荐

