Python 字符串索引必须是整数?
嘿,我在访问一些列表时遇到问题Python 字符串索引必须是整数?,python,json,Python,Json,嘿,我在访问一些列表时遇到问题 我可以使用此代码访问项目: data = session.get(BASE_URL + 'tori_market.php',params={'format': 'json'}).json() except ValueError: for item in data['items']: print(item['price']) 但我无法使用相同的代码访问用户: data = session.get(BASE_URL + 'tori_m
我可以使用此代码访问
项目
:
data = session.get(BASE_URL + 'tori_market.php',params={'format': 'json'}).json()
except ValueError:
for item in data['items']:
print(item['price'])
但我无法使用相同的代码访问用户
:
data = session.get(BASE_URL + 'tori_market.php',params={'format': 'json'}).json()
except ValueError:
for users in data['user']:
print(user['max'])
编辑:我发布了错误的代码,这是我正在使用的代码。data = session.get(BASE_URL + 'tori_market.php',params={'format': 'json'}).json()
except ValueError:
for users in data['user']:
print(users['balance'])
怎么了您可以检查API目录是如何构建的 完整回溯是:
Traceback (most recent call last):
File "/Users/Cristi/Desktop/RealBot/prova.py", line 34, in <module>
data = session.get(BASE_URL + 'tori_market.php',params={'format': 'json'}).json()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/models.py", line 799, in json
return json.loads(self.text, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/__init__.py", line 318, in loads
return _default_decoder.decode(s)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/decoder.py", line 343, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/decoder.py", line 361, in raw_decode
raise ValueError(errmsg("Expecting value", s, err.value)) from None
ValueError: Expecting value: line 1 column 1 (char 0)
回溯(最近一次呼叫最后一次):
文件“/Users/Cristi/Desktop/RealBot/prova.py”,第34行,在
data=session.get(BASE_URL+'tori_market.php',params={'format':'json'}).json()
json格式的文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/requests/models.py”,第799行
返回json.load(self.text,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/_init__.py”,第318行,在loads中
返回\u默认\u解码器。解码
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/decoder.py”,第343行,在decode中
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/decoder.py”,第361行,原始解码
从“无”引发ValueError(errmsg(“期望值”,s,err.value))
ValueError:应为值:第1行第1列(字符0)
在处理上述异常期间,发生了另一个异常:
Traceback (most recent call last):
File "/Users/Cristi/Desktop/RealBot/prova.py", line 37, in <module>
print(users['balance'])
TypeError: string indices must be integers
回溯(最近一次呼叫最后一次):
文件“/Users/Cristi/Desktop/RealBot/prova.py”,第37行,在
打印(用户[“余额])
TypeError:字符串索引必须是整数
一旦这是一个密码页面,我就可以给你一个截图。编辑的答案
上面的用户是json数据中的一个键,因此
for users in data["user"]
您已经在迭代它的键了
相反,为了简洁起见
for key in data["user"]:
print key, data["user"][key]
这将为您打印用户dict中的所有数据。所以现在键
可以获取的值“balance”
等
原始答案 这是
用户
和用户
之间的打字错误,您使用:
for users in data['user']:
但访问它的方式是:
print(user['max'])
print(users['max'])
而是通过以下方式访问它:
print(user['max'])
print(users['max'])
那么,您得到的错误的完整回溯是什么?您是否验证
数据
是否有此密钥?您提供给我们的文档链接受密码保护,如果没有帐户,我们无法在那里看到任何内容。从mu的回答中,您可以看到为什么我们需要完整的错误消息;它会给我们一个线索,就是抛出异常的是print(user['max'])
行。你在代码的其他地方定义了user
吗?啊,大概user
是以前定义的,是一个字符串。好吧,我修改了第一篇文章,添加了一个屏幕!你能解释一下如何进行新的查询以便正常工作吗?几分钟后我会试试,现在我有一些事情要做,无法访问计算机。@Cristian抱歉,请忽略该评论,我当时没有看到您附加的图像。检查编辑。。如果这有帮助的话,别忘了:)如果我现在想要平衡,我可以这样做:balan=key['balance']?