当前位置: 首页 > 知识库问答 >
问题:

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

梁研
2023-03-14

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

{
    "array": [{
        "id": "123",
        "info": {
            "name": "something"
        }
        "address": {
            "street": "Dreamland"
        }
    }]
}
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 7 column 9 (char 116)

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

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

我在这里看到过其他问题,比如这个和这个,但第一个是编码问题,这不是我的情况,第二个是针对一个非常具体的情况。

共有1个答案

姚培
2023-03-14

您可以在缺少分隔符'和'的位置对字符串进行切片(存储为异常对象的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}]
 类似资料:
  • 问题内容: 我想知道是否有一种方法可以解码类似JSON的字符串。 我得到了字符串: 这不是有效的JSON字符串,因此我无法直接使用python API对其进行解码。Python将仅接受字符串化的JSON字符串,例如: 其中属性被引用为字符串。 问题答案: 使用demjson模块,该模块具有在非严格模式下解码的能力。

  • 我正在使用Envers来审核表,但它正在为未知/不存在的表创建一些审核表。它看起来像多对一关系的多对多关系审计表。 这是对的吗?如果是,为什么? 但当我尝试删除和HorarioFixo时,我遇到了一个错误。 我收到的错误: 这是SQL重复: 所有这些都是代码的一部分。如果你需要更多,请留下评论。 我的班级: 我的映射: 新罕布什尔州和恩维尔斯配置:

  • 问题内容: 如何在定界符哪里分割此字符串 获得?的输出 问题答案: 你可以使用以下功能:

  • 问题内容: 我在CentOS 6.02 64位中的make文件中遇到错误。我需要知道应该怎么做才能使makefile可行。任何建议将大有帮助。我的make文件粘贴在下面:- 结果错误是: 问题答案: 您可以在Make产生的附录B错误中找到此错误的说明。 配方中的每一行必须以制表符开头。从文件顶部开始和附近的配方似乎都不以制表符开头。 此外,本节 在同一节(以及更多节)具有多余的空行之后,似乎缺少了

  • 问题内容: 这是解释此问题的最简单方法。这是我正在使用的: 这就是我想要的: 原因是我想将字符串拆分为标记,对其进行操作,然后再次将其放回原处。 问题答案:

  • 我试图将一些XML插入到使用列类型XML的SQL服务器数据库表中。 这在大多数情况下都可以正常工作,但是一个用户提交了一些带有十六进制值3字符的XML,SQL Server给出了错误“十六进制值0x03,是无效字符” 现在,我想在插入之前检查并删除所有无效的XML字符,有很多文章建议如何使用regex或类似的方法替换无效的XML字符。 但是,我的问题是,用户提交的XML文档中包含无效的转义字符,即