在python中将带有子字段的Json转换为CSV

在python中将带有子字段的Json转换为CSV,python,json,csv,tablib,Python,Json,Csv,Tablib,我有一个带有示例JSON输出的文件,如下所示: jsonoutput.txt文件: [{"fruit": "orange", "id":1, "countries": ["Portugal"], "color": "Orange"} {"fruit": "apple", "id":2, "countries": ["Portugal"], "color": "red"}] 我需要将csv输出为(excel文件): 现在,我越来越高兴了 水果颜色 橙色1[葡萄牙]橙色 苹果2[西班牙]红 如何

我有一个带有示例JSON输出的文件,如下所示: jsonoutput.txt文件:

[{"fruit": "orange", "id":1, "countries": ["Portugal"], "color": "Orange"}

{"fruit": "apple", "id":2, "countries": ["Portugal"], "color": "red"}]
我需要将csv输出为(excel文件):

现在,我越来越高兴了 水果颜色 橙色1[葡萄牙]橙色 苹果2[西班牙]红

如何从列国家/地区中删除[]、u和“”

print(json.dumps(fruits))
——提供json输出

这就是我试图将json转换为xlsx的原因:

data= tablib.Dataset(headers=('Fruit','id','Countries','Color'))
importfile = 'jsonoutput.txt'
data.json = open(importfile. 'r').read()
data_export = data.export('xlsx')
with open('output.xlsx','wb') as f:
    f.write(data_export)
    f.close()
你可以用

将熊猫作为pd导入
从pandas.io.json导入json_规范化
d=[
{“水果”:“橙色”,“id”:1,“国家”:[“葡萄牙”],“颜色”:“橙色”},
{“水果”:“苹果”,“id”:2,“国家”:[“葡萄牙”],“颜色”:“红色”}
]
df=pd.concat([json_normalize(d[i]),对于范围内的i(len(d))],忽略_index=True)
df['countries']=df['countries'].str.join(“”)

水果id国家/地区颜色
0橙1葡萄牙橙
1苹果2葡萄牙红

要将其保存为
.xlsx
文件,请使用:

df.to_excel('filename.xlsx',index=False)
编辑:

json\u normalize
是一个将半结构化json数据规范化为平面表的函数

我现在意识到我的代码可以简化为:

df=json_normalize(d)#不需要'pd.concat` ###输出: #水果颜色 #0橙色1[“葡萄牙”]橙色 #1苹果2[‘葡萄牙’]红色 为了从
countries
列中删除
[]
,我使用了,它相当于Python的
pandas

这是必需的,因为最初
国家/地区
列是包含元素的列表

df['countries']=df['countries'].str.join(“”)
加入项目后,
国家/地区
列不再是列表:

水果id国家/地区颜色
0橙1葡萄牙橙
1苹果2葡萄牙红

谢谢,它成功了。你能给我解释一下最后两个命令吗,因为我对熊猫很陌生。
data= tablib.Dataset(headers=('Fruit','id','Countries','Color'))
importfile = 'jsonoutput.txt'
data.json = open(importfile. 'r').read()
data_export = data.export('xlsx')
with open('output.xlsx','wb') as f:
    f.write(data_export)
    f.close()