我有一个json文件,我想将其转换为csv,这是我的代码
data=[]
with open('filename.json') as f:
for line in f:
data.append(json.loads(line))
f=csv.writer(open('filename.csv','wb+'))
for item in data:
f.writerow([item['locations'][0]['time']])
json里面还包含三个列表,每个列表都有相同的属性名称。我只能访问第一个列表中的数据;当我将f.writerow([item['locations'][0]['time']])
更改为f.writerow([item['locations'][-1]['time']])
时,它允许我访问第一个和第三个列表(将第一个和第三个列表写入csv),但它会跳过第二个列表。如何访问每个列表中的所有属性,列表1-3?
这是我的json文件的一行
的一部分locations:[
{time : 1439319674334
longitude : 1.070336
local_time : "20:01:14:334 11 08 2015 +0100 GMT+01:00"
latitude : 51.2997804},
{time : 1439319694428
longitude : 1.0703332
local_time : "20:01:34:428 11 08 2015 +0100 GMT+01:00"
latitude : 51.2997889},
{time : 1439319714638
longitude : 1.0703123
local_time : "20:01:54:638 11 08 2015 +0100 GMT+01:00"
latitude : 51.2997794}
答案 0 :(得分:0)
可以通过以下代码将此单行转换为csv:
locations:[
{time : 1439319674334
longitude : 1.070336
local_time : "20:01:14:334 11 08 2015 +0100 GMT+01:00"
latitude : 51.2997804},
{time : 1439319694428
longitude : 1.0703332
local_time : "20:01:34:428 11 08 2015 +0100 GMT+01:00"
latitude : 51.2997889},
{time : 1439319714638
longitude : 1.0703123
local_time : "20:01:54:638 11 08 2015 +0100 GMT+01:00"
latitude : 51.2997794} ]
file = open("filename.csv","a")
file.write("time, longitude, local_time, latitude\n")
for location in locations:
st = location['time'] + "," + location['longitude '] + "," + location['longitude'] + "," + location['latitude '] + "\n"
file.write(st)
答案 1 :(得分:0)
使用csv库可以让您的生活更轻松。在这里试试这个
试试这个:
In [75]: import csv
In [70]: j = {'locations':[
...: {'time' : 1439319674334,
...: 'longitude' : 1.070336,
...: 'local_time' : "20:01:14:334 11 08 2015 +0100 GMT+01:00",
...: 'latitude' : 51.2997804},
...: {'time' : 1439319694428,
...: 'longitude' : 1.0703332,
...: 'local_time' : "20:01:34:428 11 08 2015 +0100 GMT+01:00",
...: 'latitude' : 51.2997889},
...:
...: {'time' : 1439319714638,
...: 'longitude' : 1.0703123,
...: 'local_time' : "20:01:54:638 11 08 2015 +0100 GMT+01:00",
...: 'latitude' : 51.2997794}]}
...:
...:
In [74]: with open('output.csv', 'wb+') as f:
...: writer = csv.DictWriter(f, fieldnames=j['locations'][0].keys())
...: writer.writeheader()
...: for item in j['locations']:
...: writer.writerow(item)
你得到这样的输出: