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

我编写了一个pythonyt脚本来获取频道和播放列表信息。 我的Python脚本有以下JSON输出:

{'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']
)的操作。这个答案很有效。谢谢你的快速回复。