【问题标题】:How do I search values from json using requests?如何使用请求从 json 中搜索值?
【发布时间】:2016-05-15 11:08:47
【问题描述】:

我正在尝试使用请求从 API 获取此 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", "用户名": "peppy", "count300": "624689", "count100": "110468", "count50": "22795", “播放次数”:“6960”, “ranked_score”:“409604138”, "total_score": "1806143869", "pp_rank": "187209", “级别”:“64.9581”, "pp_raw": "753.665", “准确度”:“96.74224853515625”, "count_rank_ss": "16", "count_rank_s": ​​"66", "count_rank_a": "109", “国家”:“澳大利亚”, "pp_country_rank": "4363", “事件”:[] }

如果我尝试做这样的事情:

打印(r.content[用户名]

我收到此错误: 回溯(最近一次通话最后): 文件“C:\Python27\osu_api\osu.py”,第 18 行,在 打印(r.content [用户名]) NameError: 名称“用户名”未定义

【问题讨论】:

  • 你试过r.content["username"]吗?
  • Traceback(最近一次调用最后一次):文件“C:\Python27\osu_api\osu.py”,第 18 行,在 print(r.content ["username"]) 类型错误:字符串索引必须是整数,而不是 str

标签: json python-2.7


【解决方案1】:

需要使用json.loads解析json,然后访问数据:

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

【讨论】:

  • 我将代码更改为:d = json.loads(r.content) print d[0]["username"] 如果您编辑帖子,它会返回正确的数据,我会接受你的答案。
  • 你的意思是你必须像数组一样添加[0]
  • 是的,我必须添加它,否则会出现上述错误。
猜你喜欢
  • 2019-05-15
  • 2022-06-10
  • 1970-01-01
  • 2022-11-08
  • 2019-07-03
  • 1970-01-01
  • 2012-09-09
  • 2021-02-28
  • 2014-11-26
相关资源
最近更新 更多