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