合并包含python中对象数组的两个json文件



我试图合并两个json文件,每个文件都包含一个对象数组,下面是每个文件中数据的行外观示例:

文件1:中的数据

[{"tag": "MODL", "entity": "QX50"}, {"tag": "MODL", "entity": "QX60"}, {"tag": "MODL", "entity": "QX70"}]

文件2:中的数据

[{"tag": "MANF","entity": "لكزس"},{"tag": "MANF","entity": "جيب"},{"tag": "MANF","entity": "هونداي"}]

所以我试着用这个代码合并它们:

import json
f1data = f2data = "" 
with open('merged_file_models_arabic.json') as f1: 
f1data = f1.read() 
with open('MANF_arabic.json') as f2: 
f2data = f2.read() 
f1data += "n"
f1data += f2data
with open ('merged_MANF_MODL.json', 'a') as f3: 
f3.write(f1data)

但是"merged_MANF_MODL.json"文件中的结果变成了两个数组,这不是我想要的,我希望每个文件中的两个数组在"merged_MANF_MODL.json"文件中合并为一个数组。

预期结果:

[{"tag": "MODL", "entity": "QX50"}, {"tag": "MODL", "entity": "QX60"}, {"tag": "MODL", "entity": "QX70"}, {"tag": "MANF","entity": "لكزس"},{"tag": "MANF","entity": "جيب"},{"tag": "MANF","entity": "هونداي"}]

试试这个:

import json
f1data = f2data = "" 
with open('merged_file_models_arabic.json') as f1: 
f1data = json.load(f1) 
with open('MANF_arabic.json') as f2: 
f2data = json.load(f2) 
f1data.extend( f2data )   # merge
with open ('merged_MANF_MODL.json', 'a') as f3: 
json.dump(f1data, f3)

您可以尝试类似的

import json
import io
with open("file1.json") as f1:
data = json.load(f1)
with open("file2.json") as f2:
data2 = json.load(f2)
data.extend(data2)
>>> data
[{'tag': 'MODL', 'entity': 'QX50'}, {'tag': 'MODL', 'entity': 'QX60'}, 
{'tag': 'MODL', 'entity': 'QX70'}, {'tag': 'MANF', 'entity': 'لكزس'}, 
{'tag': 'MANF', 'entity': 'جيب'}, {'tag': 'MANF', 'entity': 'هونداي'}]

现在,您可以将此单个列表数据附加或写入第三个JSON文件

with io.open('merged_MANF_MODL.json', 'w', encoding='utf8') as f3: 
#json.dump(data, f3, ensure_ascii=False)
data = json.dumps(data, ensure_ascii=False)
f3.write(unicode(data))

ensure_ascii=False的原因。因为您的列表由非ascii字符(阿拉伯语(组成。如果ensure_ascii为false,则这些字符将按原样输出。

最新更新