过去2天我一直遇到这个问题,我无法解决。
import urllib.request
import json
import base64
name = "koalaaaa"
url = "https://api.mojang.com/users/profiles/minecraft/" + name
rawdata = urllib.request.urlopen(url)
newrawdata = rawdata.read()
jsondata = json.loads(newrawdata.decode('utf-8'))
results = jsondata['id']
url_uuid = "https://api.mojang.com/user/profiles/" + results + "/names"
rawdata_uuid = urllib.request.urlopen(url_uuid)
newrawdata_uuid = rawdata_uuid.read()
jsondata_uuid = json.loads(newrawdata_uuid.decode('utf-8'))
results = jsondata_uuid['name']
print (results)
我收到错误:
Traceback (most recent call last):
File "C:/Python34/unmigrated.py", line 14, in <module>
results = jsondata_uuid['name']
TypeError: list indices must be integers, not str
答案 0 :(得分:2)
jsondata_uuid
是一个dicts列表,每个都包含一个name
。要全部打印出来,您可以print([data['name'] for data in jsondata_uuid])
。
提示:使用requests代替urllib
。
答案 1 :(得分:1)
您的jsondata_uuid
包含一个字典列表,其中包含以下内容:
[{'name': 'Deamti'}, {'changedToAt': 1423576506000, 'name': 'ChocolateBanana'}, {'changedToAt': 1426793965000, 'name': 'IMBHARLOW'}, {'changedToAt': 1430137396000, 'name': 'SuckUp'}, {'changedToAt': 1437970183000, 'name': 'lllllll'}, {'changedToAt': 1440592843000, 'name': 'Koalaaaa'}]
你想要哪个'名字'键?
更改results = jsondata_uuid['name']
的行results = jsondata_uuid
,您会看到结果。然后,您可以考虑一种对名称进行排序的方法。
答案 2 :(得分:0)
jsondata_uuid
是一个列表,您不能使用密钥从中获取项目,而是可以使用数字。
如果它包含字典作为第一项,您可以使用此字典从字典中获取值,例如:
results = jsondata_uuid[0]['name']