2017-01-04 8 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" 
} 
} 
} 
} 
] 

以下のコードを使用してアクセスしようとしているうちに、私は立ち往生しました。すべてのアイデアは、どのように私は、「動画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

を抽出するためのスクリプトをmodifiyすることができます私はあなたのスクリプトで唯一の問題は、あなたが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

関連する問題