请查看此post以获得更多信息,我正在尝试找到类似的东西
contains
但是对于一个新的JSON文件,但是我一直在获取
KeyError:“屏幕截图”
我尝试了一些修复方法,但没有任何效果,因此欢迎任何帮助
JSON
intersects
答案 0 :(得分:3)
在JSON中,许多视图没有screenshots
键。第二视图(views[1]
)绝对不会,而第五视图(views[4]
)却能。
如果您尝试从视图中收集所有屏幕截图,则需要使用循环和一些条件逻辑来找到它们。
screenshots = [] # an accumulator to collect our screenshots
for view in full_data['tabs'][0]['views']: # loop over each view
if 'screenshots' in view: # only process views with a screenshots key
# there can be multiple screenshots per view, so concatenate them to our accumulator
screenshots += view['screenshots']
您可以将其进一步简化为列表理解
screenshots = [*screenshot for screenshot in full_data['tabs'][0]['views'] if 'screenshots' in view]
*screenshot
告诉Python“展开”屏幕截图列表。将每个项目添加到列表中,而不是将列表插入我们的列表中。
答案 1 :(得分:0)
在您发布的示例中:
screen_shots = full_data['tabs'][0]['views'][1]['screenshots']
转到:
{
"class": "DepictionMarkdownView", "markdown": "<p>This is a description...<\/p>", "useRawFormat": true
}
没有任何名为screenshots
的密钥。您不能保证该级别的JSON密钥具有该密钥。我猜测screenshots
仅在class
为DepictionScreenshotsView
的情况下才会出现。
因此,您可以尝试:
tab = full_data['tabs'][0]
screen_shots = [tab['views'][i]['screenshots'] for i in range(len(tab)) if tab['view'][i]['class'] == 'DepictionScreenshotsView')