使用Python访问嵌套的json字典

时间:2017-01-04 09:03:00

标签: python json

我是Python的初学者,我有以下问题:我正在尝试从下面的示例json文件中访问“videoId”。

{
"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"
}
}
}
}
]

我试图使用下面的代码访问它时遇到困难。任何想法,我如何修改脚本以提取“VideoID”?:

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()

1 个答案:

答案 0 :(得分: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'] + ',')