2017-01-04 49 views
-1

我是一個非常初學Python的人,我有以下問題:我試圖從下面的示例json文件訪問「videoId」。使用Python訪問嵌套的json字典

{ 
"kind": "youtube#playlistItemListResponse", 
"etag": "\"gMxXHe-zinKdE9lTnzKu8vjcmDI/gdfK_92q5yW4RaDjJ88_b_T00Jg\"", 
"pageInfo": { 
"totalResults": 14, 
"resultsPerPage": 50 
}, 
"items": [ 
{ 
"kind": "youtube#playlistItem", 
"etag": "\"gMxXHe-zinKdE9lTnzKu8vjcmDI/1GLB-y5RITVbkQVc1ykwFXO5rb8\"", 
"id":"UEw0dUFCODFmSmpiR0hHQWRHQXNHTlh0S1lWOVBhWmtkNy41NkI0NEY2RDEwNTU3Q0M2", 
"snippet": { 
"publishedAt": "2016-09-09T07:28:27.000Z", 
"channelId": "UC8_MMK_ePSIQf0cRvX63RkQ", 
"title": "Księżniczka do wzięcia - RODZINA PIRATÓW odc. 27 (PL)", 
"description": "Rodzina piratów to serial animowany opowiadający o rodzinie piratów, która mieszka na wyspie wraz z innymi mieszkańcami. Co dzień pirat Wiktor Mac Bernic poszukuje skarbów, które są ukryte na wyspie. Jednak przeszkadza mu w tym jego sąsiad Albert Derekin wraz z jego rodziną. Na dodatek jego syn jest zakochany w Krewetce, czyli córce Wiktora.", 
"thumbnails": { 
"default": { 
    "url": "https://i.ytimg.com/vi/slz8q6v091Y/default.jpg", 
    "width": 120, 
    "height": 90 
}, 
"medium": { 
    "url": "https://i.ytimg.com/vi/slz8q6v091Y/mqdefault.jpg", 
    "width": 320, 
    "height": 180 
}, 
"high": { 
    "url": "https://i.ytimg.com/vi/slz8q6v091Y/hqdefault.jpg", 
    "width": 480, 
    "height": 360 
}, 
"standard": { 
    "url": "https://i.ytimg.com/vi/slz8q6v091Y/sddefault.jpg", 
    "width": 640, 
    "height": 480 
} 
}, 
"channelTitle": "RODZINA PIRATÓW", 
"playlistId": "PL4uAB81fJjbGHGAdGAsGNXtKYV9PaZkd7", 
"position": 0, 
"resourceId": { 
"kind": "youtube#video", 
"videoId": "slz8q6v091Y" 
} 
} 
} 
} 
] 

我在使用下面的代碼嘗試訪問它時被卡住了。任何想法,我怎麼能modifiy腳本來提取「視頻ID」?:

import json 

f = open('out.csv','w') 

with open('Pirates3.json',encoding='UTF-8') as json_data: 
    data = json.load(json_data) 
for r in data ['items']: 
    resourceId = r ['resourceId'] 
    f.write(resourceId ['videoId']+',') 

f.close() 
+2

您需要重新張貼Python代碼時的縮進。否則,你會在人們正在尋找的代碼中引入新的錯誤。 – khelwood

+0

你的json沒有正確關閉...... –

+0

只是爲了記錄:你正在處理的是一個普通的Python「dict」 - 它已經從json加載的事實是完全不相關的。 –

回答

0

我覺得跟你的腳本唯一的問題是有一個,你沒有包含更多層次,rresourceId鍵之間是另一個級別snippet。因此,我認爲這將工作:

import json 

with open('Pirates3.json', encoding='UTF-8') as json_data: 
    data = json.load(json_data) 

with open('out.csv', 'w') as f: 
    for r in data['items']: 
     f.write(r['snippet']['resourceId']['videoId'] + ',') 
+0

它完美的作品!非常感謝!!! – Kuba