簡體   English   中英

在python中的另一個列表中訪問json列表

[英]accessing a json list inside another list in python

我有一個要轉換為csv的json文件,這是我的代碼

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}

可以通過以下代碼將此行轉換為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)

使用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)

您將獲得如下輸出:

csvout(可能會損壞)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM