我试图合并两个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,则这些字符将按原样输出。