[英]How to merge multiple json files (metadata from website) into one json file dor EDA in python?
[英]How to merge multiple json files into one file in python
我想將多個 json 文件合並到 python 中的一個文件中。我想做的是如果有幾個 .json 文件,例如:
# temp1.json
[{'num':'1', 'item':'smartphone','data':'2019-01-01'},
{'num':'2', 'item':'smartphone','data':'2019-01-02'},
{'num':'3', 'item':'smartphone','data':'2019-01-03'},
{'num':'4', 'item':'smartphone','data':'2019-01-04'}]
# temp2.json
[{'num':'5', 'item':'smartphone','data':'2019-01-05'},
{'num':'6', 'item':'smartphone','data':'2019-01-06'},
{'num':'7', 'item':'smartphone','data':'2019-01-07'}]
# temp3.json
[{'num':'8', 'item':'smartphone','data':'2019-01-08'},
{'num':'9', 'item':'smartphone','data':'2019-01-09'},
{'num':'10', 'item':'smartphone','data':'2019-01-10'},
{'num':'11', 'item':'smartphone','data':'2019-01-11'},
{'num':'12', 'item':'smartphone','data':'2019-01-12'}]
我想要得到的 result.json 文件應該是這樣的:
# result.json
[{'num':'1', 'item':'smartphone','data':'2019-01-01'},
{'num':'2', 'item':'smartphone','data':'2019-01-02'},
{'num':'3', 'item':'smartphone','data':'2019-01-03'},
{'num':'4', 'item':'smartphone','data':'2019-01-04'},
{'num':'5', 'item':'smartphone','data':'2019-01-05'},
{'num':'6', 'item':'smartphone','data':'2019-01-06'},
{'num':'7', 'item':'smartphone','data':'2019-01-07'},
{'num':'8', 'item':'smartphone','data':'2019-01-08'},
{'num':'9', 'item':'smartphone','data':'2019-01-09'},
{'num':'10', 'item':'smartphone','data':'2019-01-10'},
{'num':'11', 'item':'smartphone','data':'2019-01-11'},
{'num':'12', 'item':'smartphone','data':'2019-01-12'}]
我得到的result.json個文件是:
# result.json
[[{'num':'1', 'item':'smartphone','data':'2019-01-01'},
{'num':'2', 'item':'smartphone','data':'2019-01-02'},
{'num':'3', 'item':'smartphone','data':'2019-01-03'},
{'num':'4', 'item':'smartphone','data':'2019-01-04'}],
[{'num':'5', 'item':'smartphone','data':'2019-01-05'},
{'num':'6', 'item':'smartphone','data':'2019-01-06'},
{'num':'7', 'item':'smartphone','data':'2019-01-07'}],
[{'num':'8', 'item':'smartphone','data':'2019-01-08'},
{'num':'9', 'item':'smartphone','data':'2019-01-09'},
{'num':'10', 'item':'smartphone','data':'2019-01-10'},
{'num':'11', 'item':'smartphone','data':'2019-01-11'},
{'num':'12', 'item':'smartphone','data':'2019-01-12'}]]
我使用代碼從這里合並 .json 文件,並像下面這樣稍微改變它:
files=['my.json','files.json',...,'name.json']
def merge_JsonFiles(filename):
result = list()
for f1 in filename:
with open(f1, 'r') as infile:
result.append(json.load(infile))
with open('counseling3.json', 'w') as output_file:
json.dump(result, output_file)
merge_JsonFiles(files)
我已經閱讀了幾個相關問題,但沒有我需要的答案。 誰能幫我?
您應該使用extend
而不是append
。 它會將傳遞的列表的項目添加到result
而不是新列表:
files=['my.json','files.json',...,'name.json']
def merge_JsonFiles(filename):
result = list()
for f1 in filename:
with open(f1, 'r') as infile:
result.extend(json.load(infile))
with open('counseling3.json', 'w') as output_file:
json.dump(result, output_file)
merge_JsonFiles(files)
import json
import pandas as pd
with open('example1.json') as f1: # open the file
data1 = json.load(f1)
with open('example2.json') as f2: # open the file
data2 = json.load(f2)
df1 = pd.DataFrame([data1]) # Creating DataFrames
df2 = pd.DataFrame([data2]) # Creating DataFrames
MergeJson = pd.concat([df1, df2], axis=1) # Concat DataFrames
MergeJson.to_json("MergeJsonDemo.json") # Writing Json
files=['my.json','files.json',...,'name.json']
with open('merged_file_name.json', "w") as outfile:
outfile.write('{}'.format('\n'.join([open(f, "r").read() for f in files])))
還有另一種方法。只需將這些文件中的 json 文本加載為 python 列表,然后將它們添加在一起。 代碼如下。
# temp1.json
json_a = [{'num':'1', 'item':'smartphone','data':'2019-01-01'},
{'num':'2', 'item':'smartphone','data':'2019-01-02'},
{'num':'3', 'item':'smartphone','data':'2019-01-03'},
{'num':'4', 'item':'smartphone','data':'2019-01-04'}]
# temp2.json
json_b = [{'num':'5', 'item':'smartphone','data':'2019-01-05'},
{'num':'6', 'item':'smartphone','data':'2019-01-06'},
{'num':'7', 'item':'smartphone','data':'2019-01-07'}]
# temp3.json
json_c = [{'num':'8', 'item':'smartphone','data':'2019-01-08'},
{'num':'9', 'item':'smartphone','data':'2019-01-09'},
{'num':'10', 'item':'smartphone','data':'2019-01-10'},
{'num':'11', 'item':'smartphone','data':'2019-01-11'},
{'num':'12', 'item':'smartphone','data':'2019-01-12'}]
print(json_a + json_b + json_c)
輸出:
[{'num': '1', 'item': 'smartphone', 'data': '2019-01-01'},
{'num': '2', 'item': 'smartphone', 'data': '2019-01-02'},
{'num': '3', 'item': 'smartphone', 'data': '2019-01-03'},
{'num': '4', 'item': 'smartphone', 'data': '2019-01-04'},
{'num': '5', 'item': 'smartphone', 'data': '2019-01-05'},
{'num': '6', 'item': 'smartphone', 'data': '2019-01-06'},
{'num': '7', 'item': 'smartphone', 'data': '2019-01-07'},
{'num': '8', 'item': 'smartphone', 'data': '2019-01-08'},
{'num': '9', 'item': 'smartphone', 'data': '2019-01-09'},
{'num': '10', 'item': 'smartphone', 'data': '2019-01-10'},
{'num': '11', 'item': 'smartphone', 'data': '2019-01-11'},
{'num': '12', 'item': 'smartphone', 'data': '2019-01-12'}]
如果目標是合並多個JSON
文件,請嘗試以下操作:
def combine_jsons():
file_list = ['first.json', 'second.json',... ,'last.json']
all_data_dict = {}
for json_file in file_list:
with open(json_file,'r+') as file:
# First we load existing data into a dict.
file_data = json.load(file)
all_data_dict.update(file_data)
with open('merged_data.json', "w") as outfile:# save to json file
json.dump(all_data_dict, outfile)
如果出於某種原因它必須是一個列表,只需更改最后一行
json.dump([all_data_dict], outfile)
基於How do I merge two dictionaries in a single expression (take union of dictionaries)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.