0
にJSONレスポンスは、ここではサンプルです:だから私は、次の応答(JSONレスポンス)を解析しようとしている利用-dictの
{
"kind": "youtube#searchListResponse",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/fywkWrox-IkW0v2IWY27RMiWvvA\"",
"nextPageToken": "CBQQAA",
"regionCode": "IQ",
"pageInfo": {
"totalResults": 1000000,
"resultsPerPage": 20
},
"items": [
{
"kind": "youtube#searchResult",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/j0uEstXCXOhrDqDegEBmEeHqsBM\"",
"id": {
"kind": "youtube#video",
"videoId": "YQHsXMglC9A"
},
"snippet": {
"publishedAt": "2015-10-23T06:54:18.000Z",
"channelId": "UComP_epzeKzvBX156r6pm1Q",
"title": "Adele - Hello",
"description": "'Hello' is taken from the new album, 25, out November 20. http://adele.com Available now from iTunes http://smarturl.it/itunes25 Available now from Amazon ...",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/YQHsXMglC9A/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/YQHsXMglC9A/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/YQHsXMglC9A/hqdefault.jpg",
"width": 480,
"height": 360
}
},
"channelTitle": "AdeleVEVO",
"liveBroadcastContent": "none"
}
}
そして、これは私の解析関数である:
def parse(self):
items = self['items']
i = 0
for item in items:
Data = {str(i): {
"id": item['id']['videoId'],
"title": item['snippet']['title'],
"description": item['snippet']['description'],
"thumbnail": item['snippet']['thumbnails']['medium']['url'],
"publishedAt": item['snippet']['publishedAt'],
"FullURL": "https://www.youtube.com/watch?v=" + item['id']['videoId']
}}
i = i +1
return Data
主な問題は、辞書はレスポンスの最後のビットだけを挿入していることです。たとえば、10個の結果を取得していて、最後のレスポンスを返すだけです。どうしたの?
'for'ループの前に' Data'が存在しないため、常に再定義されています。あなたは最終的な化身を「返す」ようになります。 – roganjosh
役に立つ読んでください:http://python-textbok.readthedocs.io/en/1.0/Variables_and_Scope.html – Lescurel
私はそれについて考えましたが、正直なところ、私はそれを修正する方法が全くわかりません。カップルの時間にそれを修正しようとしました –