用于提取JSON响应项的Python基本命令

2024-05-23 13:37:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我只接触了几天的Python体验,所以我很抱歉用一个小步骤问题污染了站点。 我正在尝试为XBMC编写一个插件,我相信它使用python2.4。我访问了一个webapi,它用JSON封装了返回。我把url返回保存到一个WebHTML列表(我想是一个列表!)。当我从stackoverflow教程中输入以下内容时:

decoded = json.loads(WebHTML)
print 'DECODED:', decoded

我在日志中看到以下内容:

NOTICE: {u'totalItems': 1, u'query': u'Ludwig van Beethoven Op 67 Symphony No 5 in Cm (Fate)', u'kind': u'volumes#volumes', u'items': [{u'scoreId': u'IMSLP01056', u'pageCount': 42, u'title': u'Symphony No.5, Op.67 - Complete Score (S.464/5)', u'kind': u'volumes#volume', u'authors': [u'Beethoven, Ludwig van'], u'year': 1807, u'selfLink': u'http://www.peachnote.com/rest/api/v0/score?id=IMSLP01056'}]}

我想为后续的url调用提取scoreId,即IMSLP01056,但我无法使用正确的命令。当我尝试:

^{pr2}$

返回的日志错误为:

TypeError: list indices must be integers, not str

如果我尝试:

print dict[4][1]

它回来了

KeyError: (4,)

我尝试过各种JSONloads命令,但都无法正常工作。开头总是出错:

IOError: (2, 'No such file or directory', '{\n "kind": "volumes#volumes",\n "query": "Ludwig ..... etc, etc.

所以,我有点困惑,我应该使用正确的命令。感谢和抱歉,如果这是一个非常基本的问题太多的信息。在


Tags: no命令url列表queryvanludwigdecoded
1条回答
网友
1楼 · 发布于 2024-05-23 13:37:30

您得到的主要响应确实是一个字典,但是它的items键的值是一个列表。因此,错误是告诉您使用整数索引进行内部查找。所以:

dict['items'][0]['scoreId']

请注意,items列表中可能有许多项,上面只给出第一个:您可能希望在一个列表中包含所有这些项:

^{pr2}$

它将遍历所有项目,并将它们的分数提取到一个单独的列表中。在

另外,正如larsmans所说,不要使用dict(或list)作为变量名,因为它隐藏了内置的dict()函数。在

相关问题 更多 >