Python 如何在JSON对象的末尾添加一个字符,如“,”和“[”和“])

Python 如何在JSON对象的末尾添加一个字符,如“,”和“[”和“]),python,json,Python,Json,我有一个Python脚本,它使用无效的JSON生成文件。 现在我想操纵这个JSON文件,通过在每个对象之间添加一个逗号,使其成为一个有效的JSON文件,在文件a“[”的开头和a“]”的结尾。 有没有一种方法可以单独使用JSON实现这一点,或者我必须找到一种方法来使用其他读写函数 Exsample_File.json: { "firstName": "Bidhan", "lastName": "Chatterjee", "age": 40, "email":

我有一个Python脚本,它使用无效的JSON生成文件。 现在我想操纵这个JSON文件,通过在每个对象之间添加一个逗号,使其成为一个有效的JSON文件,在文件a“[”的开头和a“]”的结尾。 有没有一种方法可以单独使用JSON实现这一点,或者我必须找到一种方法来使用其他读写函数

Exsample_File.json:

    {
    "firstName": "Bidhan",
    "lastName": "Chatterjee",
    "age": 40,
    "email":"bidhan@example.com"
    }
    {
    "firstName": "hanbid",
    "lastName": "jeeChatter",
    "age": 10,
    "email":"example@bidhan.com"
    }
     .... 
    n times
    [
    {
    "firstName": "Bidhan",
    "lastName": "Chatterjee",
    "age": 40,
    "email":"bidhan@example.com"
    },
    {
    "firstName": "hanbid",
    "lastName": "jeeChatter",
    "age": 10,
    "email":"example@bidhan.com"
    },
     .... 
    n times
    ]
New_File.json:

    {
    "firstName": "Bidhan",
    "lastName": "Chatterjee",
    "age": 40,
    "email":"bidhan@example.com"
    }
    {
    "firstName": "hanbid",
    "lastName": "jeeChatter",
    "age": 10,
    "email":"example@bidhan.com"
    }
     .... 
    n times
    [
    {
    "firstName": "Bidhan",
    "lastName": "Chatterjee",
    "age": 40,
    "email":"bidhan@example.com"
    },
    {
    "firstName": "hanbid",
    "lastName": "jeeChatter",
    "age": 10,
    "email":"example@bidhan.com"
    },
     .... 
    n times
    ]
这是生成此JSON文件的函数。我不想触及str生成的其他代码

data = json.loads(str)
    with open('Example_File.json','ab')as outfile:
        json.dump(data, outfile, indent=2)
到目前为止,我还没有办法解决这个问题。因此,没有代码示例会有所帮助

结果应该像新文件一样

您不能这样做吗

words.replace('}','},')

这应该用“}”替换“}”的所有实例。

首先,我认为没有办法将其直接解析为JSON数组。 但是,如果JSON对象没有嵌套,解析它们的一种简单方法是拆分字符串:

with open(YOUR_FILE) as jsons_file:
    jsons = [x.strip() + '}' for x in jsons_file.read().split('}')][:-1]
现在,您可以使用
json
的库
dump
dumps
将其转储到文件或字符串中

json.dumps(jsons)


您可能需要将内容作为字符串读取、操作并作为JSON加载。像这样的,

import json

with open('Example.json','r') as f:
  data = f.read()

data = "[" + data.replace("}", "},", data.count("}")-1) + "]"
json_data = json.loads(data)
您的数据似乎有以0开头的数字,因此您可能会以异常“ValueError”结束。您可以参考如何从


注意:我手动从“Example.json”中删除了0,以便在每个对象之间添加自动逗号,并在文件中添加括号以使其完整,只需编写一个简单的jq查询

jq -s '.' file_name

在本例中,示例_file.json似乎不是有效的json格式。您能用正确的值重新定义吗?您的文件似乎包含一系列有效的JSON片段。我会打开文件,反复解析JSON结构,直到到达文件的末尾。对于读取的每个数据,写回并在需要的地方打印逗号“,(用方括号括起来)生成这些文件的代码是什么?首先编辑这个可能更容易。如果您不想编辑它,那么您可以使用一些正则表达式来查找每个“}”,并在其后面加一个逗号。第一个文件中的每个JSON对象是否代表文件中的一行?不要试图篡改生成的文件。首先正确地生成它。如果您展示了用于生成文件的代码,这会很有帮助。问题是关于添加字符,
replace
将如何添加新字符??这将添加逗号。请注意,在结尾处有一个逗号,您应该删除它,并且您仍然需要添加方括号。我在我的文件中测试了您的示例,并且有一个AttributeError:“list”对象没有属性“split”,就是这样!它非常好用。我刚刚添加了:用open('DumpedText.json','w')作为out_文件:json.dump(json_数据,out_文件,indent=2)和它的完美。谢谢!