gpt4 book ai didi

python - 如何在 Python 中的无效 JSON 中插入缺少的分隔符?

转载 作者:行者123 更新时间:2023-12-01 00:25:41 24 4
gpt4 key购买 nike

我正在尝试创建一个程序,该程序可以识别缺少哪些分隔符并将它们插入 JSON 文件中各自的位置。因此,举例来说,假设我的 JSON 如下所示:

{
"array": [{
"id": "123",
"info": {
"name": "something"
}
"address": {
"street": "Dreamland"
}
}]
}

JSON 无效,因为 }“address” 之间没有 ,

事情是这样的:当我尝试使用 json.loads(my_json.read()) 时,它会抛出 JSONDecodeError 异常,这会告诉我什么字符丢失以及它应该在什么字符位置,如下所示:

json.decoder.JSONDecodeError: Expecting ',' delimiter: line 7 column 9 (char 116)

我已经尝试过打印 my_json.seek(116) ,但根本不起作用,它只打印了数字 116。

所以我的问题是:是否可以实际使用异常错误消息来修复 JSON 因为它显示缺少哪个分隔符以及它应该在什么位置,或者我应该使用一个堆栈数据结构来跟踪所有可能的分隔符并插入丢失的分隔符?或者有更好的方法吗?

我在这里看到了其他问题,例如 this onethis one但第一个是编码问题,这不是我的情况,第二个是针对非常具体的情况。

抱歉,如果其中有些内容看起来很愚蠢,我仍在学习如何使用 Python 进行编码。

感谢您的宝贵时间:)

最佳答案

您可以在分隔符','所在的位置对字符串进行切片。缺失(存储为异常对象的 pos 属性),并将它们与 ',' 连接起来:

import json

s = '[{"a":1}{"b":2}{"c":3}]'
while True:
try:
data = json.loads(s)
break
except json.decoder.JSONDecodeError as e:
if not e.args[0].startswith("Expecting ',' delimiter:"):
raise
s = ','.join((s[:e.pos], s[e.pos:]))
print(s)
print(data)

输出:

[{"a":1},{"b":2},{"c":3}]
[{'a': 1}, {'b': 2}, {'c': 3}]

关于python - 如何在 Python 中的无效 JSON 中插入缺少的分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58598558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com