2016-05-15 58 views
0

我想從使用請求的API從這個JSON文件獲取屬性。 這是我的代碼:如何使用請求從json中搜索值?

import requests 

print "Enter a user ID or name..." 
inp = raw_input() 

print "Select a mode..." 
mode = raw_input() 
def usage(): 
    print "0 = osu!" 
    print "1 = Taiko" 
    print "2 = CtB" 
    print "3 = osu!mainia" 

if mode == "0" or "1" or "2" or "3": 
r=requests.get("https://osu.ppy.sh/api/get_useru="+inp+"&k=bd1f7038XXXXXXX+mode)                                                   
print(r.text) 

它返回該JSON:

{ 「user_ID的」: 「2」, 「用戶名」: 「強力的」, 「count300」: 「624689」, 「count100」: 「110468」, 「count50」: 「22795」, 「playcount」: 「6960」, 「ranked_score」: 「409604138」, 「total_score」: 「1806143869」, 「pp_rank」: 「187209」, 「level」:「64.9581」, 「pp_生 「: 」753.665「, 」準確性「: 」96.74224853515625「, 」count_rank_ss「: 」16「, 」count_rank_s「: 」66「, 」count_rank_a「: 」109「, 」國家「:」 AU 」 「pp_country_rank」: 「4363」, 「事件」:[] }

如果我嘗試做這樣的事情:

打印(r.content [用戶名]

我得到這個錯誤: 回溯(最近的通話最後): 文件「C:\ Pyth on27 \ osu_api \ osu.py」,第18行,在 打印(r.content [用戶名]) NameError:名稱 '用戶名' 未定義

+0

你試過'r.content [「username」]'? – Tomer

+0

回溯(最近一次調用最後一次): 文件「C:\ Python27 \ osu_api \ osu.py」,第18行,在 print(r.content [「用戶名」]) TypeError:字符串索引必須是整數, not str –

回答

0

您需要解析使用json.loads的JSON,然後訪問數據:

import json 
data = json.loads(r.content) 
print data[0]['username'] 
+0

我將代碼更改爲:d = json.loads(r.content) print d [0] [「username」],如果您編輯您的帖子,它會返回正確的數據,我會接受您的答案。 –

+0

你的意思是你必須添加'[0]'好像它是一個數組? – Tomer

+0

是的,我必須添加它,否則會出現上述錯誤。 –