Python 如何从这个JSON输出中提取数据?
我编写了一个pythonyt脚本来获取频道和播放列表信息。 我的Python脚本有以下JSON输出:Python 如何从这个JSON输出中提取数据?,python,arrays,json,Python,Arrays,Json,我编写了一个pythonyt脚本来获取频道和播放列表信息。 我的Python脚本有以下JSON输出: {'etag': '"p4VTdlkQv3HQeTEaXgvLePAydmU/ptsLJl-r_dDEzokkl3Kso2SZgL0"', 'items': [{'etag': '"p4VTdlkQv3HQeTEaXgvLePAydmU/9F4RmINu4drT-fTZjviHFXj3Yak"', 'id': 'PLejO9z7yhQOxjONeDVWaAy3kX3tE
{'etag': '"p4VTdlkQv3HQeTEaXgvLePAydmU/ptsLJl-r_dDEzokkl3Kso2SZgL0"',
'items': [{'etag': '"p4VTdlkQv3HQeTEaXgvLePAydmU/9F4RmINu4drT-fTZjviHFXj3Yak"',
'id': 'PLejO9z7yhQOxjONeDVWaAy3kX3tEcImCR',
'kind': 'youtube#playlist',
'snippet': {'channelId': 'UC_ANPr8IkWibKlKhmi_-H1g',
'channelTitle': 'haramaininfo',
'description': '',
'localized': {'description': '',
'title': 'Eid Takbeerat 1440'},
'publishedAt': '2019-06-04T06:30:13.000Z',
'thumbnails': {'default': {'height': 90,
'url': 'https://i.ytimg.com/vi/HcEZMA0KJDg/default.jpg',
'width': 120},
'high': {'height': 360,
'url': 'https://i.ytimg.com/vi/HcEZMA0KJDg/hqdefault.jpg',
'width': 480},
'maxres': {'height': 720,
'url': 'https://i.ytimg.com/vi/HcEZMA0KJDg/maxresdefault.jpg',
'width': 1280},
'medium': {'height': 180,
'url': 'https://i.ytimg.com/vi/HcEZMA0KJDg/mqdefault.jpg',
'width': 320},
'standard': {'height': 480,
'url': 'https://i.ytimg.com/vi/HcEZMA0KJDg/sddefault.jpg',
'width': 640}},
'title': 'Eid Takbeerat 1440'}},
{'etag': '"p4VTdlkQv3HQeTEaXgvLePAydmU/0vwPehiWj-5tfpY0dosabZkUwbI"',
'id': 'PLejO9z7yhQOwt7OKSMVLdAe4jeYDpZNJC',
'kind': 'youtube#playlist',
'snippet': {'channelId': 'UC_ANPr8IkWibKlKhmi_-H1g',
'channelTitle': 'haramaininfo',
'description': '',
'localized': {'description': '',
'title': 'Makkah Taraweeh 1440 (2019)'},
'publishedAt': '2019-04-27T13:28:47.000Z',
'thumbnails': {'default': {'height': 90,
'url': 'https://i.ytimg.com/vi/h9pn4qQqJTU/default.jpg',
'width': 120},
'high': {'height': 360,
'url': 'https://i.ytimg.com/vi/h9pn4qQqJTU/hqdefault.jpg',
'width': 480},
'medium': {'height': 180,
'url': 'https://i.ytimg.com/vi/h9pn4qQqJTU/mqdefault.jpg',
'width': 320}},
'title': 'Makkah Taraweeh 1440 (2019)'}},
{'etag': '"p4VTdlkQv3HQeTEaXgvLePAydmU/qUNlGZC0dbvnetbNDH5EBW_6yLA"',
'id': 'PLejO9z7yhQOzJ068ZMLd0Zub_FOrGJ82y',
'kind': 'youtube#playlist',
'snippet': {'channelId': 'UC_ANPr8IkWibKlKhmi_-H1g',
'channelTitle': 'haramaininfo',
'description': '',
'localized': {'description': '',
'title': 'Madeenah Taraweeh 1440 (2019)'},
'publishedAt': '2019-04-27T13:28:20.000Z',
'thumbnails': {'default': {'height': 90,
'url': 'https://i.ytimg.com/vi/CWNlyYtUTVE/default.jpg',
'width': 120},
'high': {'height': 360,
'url': 'https://i.ytimg.com/vi/CWNlyYtUTVE/hqdefault.jpg',
'width': 480},
'maxres': {'height': 720,
'url': 'https://i.ytimg.com/vi/CWNlyYtUTVE/maxresdefault.jpg',
'width': 1280},
'medium': {'height': 180,
'url': 'https://i.ytimg.com/vi/CWNlyYtUTVE/mqdefault.jpg',
'width': 320},
'standard': {'height': 480,
'url': 'https://i.ytimg.com/vi/CWNlyYtUTVE/sddefault.jpg',
'width': 640}},
'title': 'Madeenah Taraweeh 1440 (2019)'}},
{'etag': '"p4VTdlkQv3HQeTEaXgvLePAydmU/9ImuAJ6f9CNNHDLCZ7WY80GeT1g"',
'id': 'PLejO9z7yhQOx8ZrJYJ3o5zckygwvtUb1R',
'kind': 'youtube#playlist',
'snippet': {'channelId': 'UC_ANPr8IkWibKlKhmi_-H1g',
'channelTitle': 'haramaininfo',
'description': '',
'localized': {'description': '',
'title': 'Madeenah Witr 1440 (2019)'},
'publishedAt': '2019-04-27T13:27:34.000Z',
'thumbnails': {'default': {'height': 90,
'url': 'https://i.ytimg.com/vi/Qjyd94QSutw/default.jpg',
'width': 120},
'high': {'height': 360,
'url': 'https://i.ytimg.com/vi/Qjyd94QSutw/hqdefault.jpg',
'width': 480},
'maxres': {'height': 720,
'url': 'https://i.ytimg.com/vi/Qjyd94QSutw/maxresdefault.jpg',
'width': 1280},
'medium': {'height': 180,
'url': 'https://i.ytimg.com/vi/Qjyd94QSutw/mqdefault.jpg',
'width': 320},
'standard': {'height': 480,
'url': 'https://i.ytimg.com/vi/Qjyd94QSutw/sddefault.jpg',
'width': 640}},
'title': 'Madeenah Witr 1440 (2019)'}},
{'etag': '"p4VTdlkQv3HQeTEaXgvLePAydmU/tghRJYmcElUo0PCD23-bkBwOcZ4"',
'id': 'PLejO9z7yhQOxx6XqB6DLvQd0-IDpb299H',
'kind': 'youtube#playlist',
'snippet': {'channelId': 'UC_ANPr8IkWibKlKhmi_-H1g',
'channelTitle': 'haramaininfo',
'description': '',
'localized': {'description': '',
'title': 'Makkah Witr 1440 (2019)'},
'publishedAt': '2019-04-27T13:27:12.000Z',
'thumbnails': {'default': {'height': 90,
'url': 'https://i.ytimg.com/vi/yjLrG4LVv3Q/default.jpg',
'width': 120},
'high': {'height': 360,
'url': 'https://i.ytimg.com/vi/yjLrG4LVv3Q/hqdefault.jpg',
'width': 480},
'maxres': {'height': 720,
'url': 'https://i.ytimg.com/vi/yjLrG4LVv3Q/maxresdefault.jpg',
'width': 1280},
'medium': {'height': 180,
'url': 'https://i.ytimg.com/vi/yjLrG4LVv3Q/mqdefault.jpg',
'width': 320},
'standard': {'height': 480,
'url': 'https://i.ytimg.com/vi/yjLrG4LVv3Q/sddefault.jpg',
'width': 640}},
'title': 'Makkah Witr 1440 (2019)'}}],
'kind': 'youtube#playlistListResponse',
'nextPageToken': 'CAUQAA',
'pageInfo': {'resultsPerPage': 5, 'totalResults': 137}}
我用Python编写了以下代码以提取某些数据:
pprint.pprint(jdata)
for item in jdata:
print("Title: {}\nid: {}\nurl: {}\n".format(item['title'], item['id'], item['url']))
但这是我运行代码时返回的错误:
print(“Title:{}\nid:{}\nurl:{}\n”。格式(项['Title']、项['id']、项['url']))
TypeError:字符串索引必须是整数,而不是str
如何正确提取数据?这是一个嵌套的dict,除了
id
之外,其他两个(title
和url
)是snippet
的直接/间接子键,它本身嵌套在项数组中。因此,我们应该循环这个数组,深入到snippet
树中,以便能够访问它们的值。另外,url
可以具有默认值
、标准值
、高值
、最大值
和中等值。下面的代码段显示了default
键的url
值。如果要访问任何其他分辨率类型的值,则必须进行相应修改
In [18]: for item in json_string['items']:
...: print("Title: {}\nid: {}\nurl: {}\n".format(item['snippet']['title'], item['id'], item['snippet']['thumbna
...: ils']['default']['url']))
...:
...:
Title: Eid Takbeerat 1440
id: PLejO9z7yhQOxjONeDVWaAy3kX3tEcImCR
url: https://i.ytimg.com/vi/HcEZMA0KJDg/default.jpg
Title: Makkah Taraweeh 1440 (2019)
id: PLejO9z7yhQOwt7OKSMVLdAe4jeYDpZNJC
url: https://i.ytimg.com/vi/h9pn4qQqJTU/default.jpg
Title: Madeenah Taraweeh 1440 (2019)
id: PLejO9z7yhQOzJ068ZMLd0Zub_FOrGJ82y
url: https://i.ytimg.com/vi/CWNlyYtUTVE/default.jpg
Title: Madeenah Witr 1440 (2019)
id: PLejO9z7yhQOx8ZrJYJ3o5zckygwvtUb1R
url: https://i.ytimg.com/vi/Qjyd94QSutw/default.jpg
Title: Makkah Witr 1440 (2019)
id: PLejO9z7yhQOxx6XqB6DLvQd0-IDpb299H
url: https://i.ytimg.com/vi/yjLrG4LVv3Q/default.jpg
您可以像标准字典一样访问数据。假设jdata
的类型为dict
,您正在迭代此字典中的键(因此项
的类型为string)。顺便说一句,你想提取什么url
呢?@AndrejKesely你能根据我的编码给我举个例子吗?jdata['items']
应该给你一个项目列表。您可以迭代此列表并提取其他数据。请注意,jdata['items']
中的每个item
都是与JSON数据中的内容相对应的字典。我之所以提到这一点,是因为您需要的某些内容嵌套在子字典中,所以要访问它们,您需要执行类似于item['snippet']['title']
)的操作。这个答案很有效。谢谢你的快速回复。