2015-01-13 123 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

相關問題