1

我正在使用代码:

getSource = requests.get("https://api.twitch.tv/kraken/streams")
text = json.loads(getSource.text)
print text["streams"]["_links"]["_self"]

text 是我通过调用 json.loads 得到的字典。然后我尝试获取嵌套值,最终尝试获取 url 但出现此错误:

Traceback (most recent call last):
  File "Twitch Strim.py", line 11, in <module>
    print text["streams"]["_links"]["_self"]
TypeError: list indices must be integers, not str

我该如何纠正?

4

2 回答 2

0

错误是说您在“文本”对象上有一个列表。我认为您应该打印变量 test 以查看其内容。

于 2015-02-13T05:17:48.700 回答
0

您访问的 json 数据错误,正确的访问方法是:

print text["streams"][0]["_links"]["self"]

完整代码:

>>> import requests
>>> import json
>>> getSource = requests.get("https://api.twitch.tv/kraken/streams")
>>> text = json.loads(getSource.text)
>>> print text["streams"][0]["_links"]["self"]
https://api.twitch.tv/kraken/streams/summit1g
>>> print text["streams"][1]["_links"]["self"]
https://api.twitch.tv/kraken/streams/tsm_theoddone
>>> print text["streams"][2]["_links"]["self"]
https://api.twitch.tv/kraken/streams/reynad27

请注意,它text["streams"]为您提供了项目列表(而不是字典),因此您必须通过其索引值进行访问。

您可以使用相同的方法进行检查

>>> type(text["streams"])
<type 'list'>
于 2015-02-13T05:23:37.987 回答