Python-将json数据转换为特定键的csv格式

时间:2019-05-21 14:31:11

标签: python json csv

我正在开发一个应用程序,希望使用密钥从json文件中提取数据,并将其存储到csv文件中以供进一步使用。

示例json数据类似于:

  

[{“名称”:“约翰”,“办公室”:“ 1st Ave”,“出生日期”:“ 1978-01-01”},{“名称”:“简”,“办公室”:“ 2nd Ave“,” Birth date“:” 1970-01-01“}]

这只是虚拟数据

到目前为止,我所做的是:


with open("input.json") as infile, open('output.csv', 'w') as outfile:
    writer = csv.writer(outfile, delimiter=' ')

    i=0
    for line in infile:
        d = json.loads(line)
        writer.writerows(d[i]['Name'])
        i=i+1

但是使用此代码,我面临的问题是csv文件看起来像这样:

  

J

     

o

     

h

     

n

就是我想要的:

  

名称

     

约翰

     

关于它为什么发生以及如何解决的任何想法?

也:

我想将标签添加为0作为第二列到csv。如:

  

名称ID

     

约翰0

     

珍妮0

2 个答案:

答案 0 :(得分:0)

对于每一行,您的“名称”都不是列表。

line = '{"Name": "John", "Office": "1st Ave", "Birth date": "1978-01-01"}'

d = json.loads(line)
d['Name'] # "John"

您需要在writerows之前创建项目列表:

names = [json.loads(x)['Name'] for x in lines]
writer.writerows(names)

答案 1 :(得分:0)

我个人会很简单地使用pandas

import pandas as pd
df = pd.read_json('input.json')
df['Name'].to_csv('output.csv', index=False)
df['ID'] = O
df[['Name','ID']].to_csv('output_2.csv', index=False, sep = ' ')

据我了解,“ ID”值始终等于0。是吗?