我正在开发一个应用程序,希望使用密钥从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
答案 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。是吗?