字符串索引必须是整数?

时间:2015-01-13 14:30:44

标签: python json

嘿,我在访问某些列表时遇到问题。

我可以使用以下代码访问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

1 个答案:

答案 0 :(得分: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'])