2015-01-13 124 views
-1

嘿,我有问题访问一些列表。
字符串索引必须是整数?

我可以使用此代码访问Items

data = session.get(BASE_URL + 'tori_market.php',params={'format': 'json'}).json() 
except ValueError: 
    for item in data['items']: 
     print(item['price']) 

但使用相同的代码我无法访问User

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']) 

它有什么问题?
您可以检查如何在此link中构建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) 

在上述异常处理,又发生了异常:

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 

只要它是一个需要密码页面,我可以给你的截图,here

+0

什么是错误你得到那么** **完全回溯?你是否证实'数据'有这样一个关键?您提供给我们的文档链接受密码保护,我们在没有帐户的情况下看不到任何内容。 –

+1

从mu的答案你可以看到为什么我们需要有完整的错误信息;它给我们提供了一个线索,它是引发异常的'print(user ['max'])'行。你在该代码中的其他地方定义了“user”吗? –

回答

1

编辑答案

用户在上面的是JSON数据的关键,所以当你

for users in data["user"] 

您已经迭代了钥匙。

相反,为了简便起见,做,

for key in data["user"]: 
    print key, data["user"][key] 

这将打印用户字典内为你的所有数据。所以现在key可以采取的"balance"


原来的答复

这是usersuser之间的错字,您使用的值:

for users in data['user']: 

,但它的访问如:

print(user['max']) 

相反访问它:

print(users['max']) 
+1

啊,大概'user'是之前定义的,并且是一个字符串。 –

+0

Okey我修改了第一篇文章,添加了一个屏幕! – Cristian

+0

你能解释我如何做这个新的查询才能正常工作吗?我会在几分钟内尝试它,目前我需要做一些事情并且无法访问计算机。 – Cristian

相关问题