为了账号安全,请及时绑定邮箱和手机立即绑定

无法正确读取 api json 数据

无法正确读取 api json 数据

慕仙森 2022-05-19 18:52:10
我成功地提取了我在代码前半部分所需的匹配数据,但我似乎无法完成另一部分。我正在读取 JSON 数据并以同样的方式进行操作,但我得到的是字符串,而不是带有数据的字典。我确定这是一个逻辑问题或什么的,请帮助我。我的 github 上有工作部分:https ://github.com/LEvinson2504/Football-Prediction-and-analysisimport urllib.requestimport json#Match odds#!/usr/bin/python# -*- coding: utf-8 -*-import urllib.requestdef SportDemo():    # Set url parameter    url = "http://api.isportsapi.com/sport/free/football/odds/main?api_key=" + api_key    # Call iSport Api to get data in json format    f = urllib.request.urlopen(url)    content = f.read()    #data = json.loads((content.decode('utf-8')))    data = content.decode('utf-8')    '''store match ids    matches = []    #English teams match id    for team in data['data']:        if (team == 'English Premier League'):            #store match ids            matches.append(team['matchId'])    '''    #here is the problem, tried several ways to access data    for i in data[data]:        print(i['asia'])    '''    for match in data[data]['asia']:        for coun in match:            print(coun)    '''    '''        if(match == 'asian'):            print(type(match))    '''        #if (match['leagueName'] == 'ENG U23 D1'):    #for odds in data['data']:        #for i in matches:        #print()SportDemo()预期的输出,我想在字典中阅读以获取数据旁边的键“欧洲”、“亚洲”Json 数据:https ://www.isportsapi.com/docs?isportsDocIndex=1-4-24喜欢她,对不起我无法格式化。但我什么也得不到
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

首先,当提出问题时,请花时间整理它,以便它代表您实际运行的内容并删除任何注释掉的代码。


在您的情况下,问题可以简化为:


f = urllib.request.urlopen(url)

content = f.read()

data = json.loads((content.decode('utf-8')))


#here is the problem, tried several ways to access data

for i in data[data]:

    print(i['asia'])

我们实际上可以看到问题所在。data是一个字典;在该 dict 中是一个 key 'data',它本身就是一个 dict 。遍历 dict 会给你keys。如果您只想访问“亚洲”数据,那么就这样做,根本不需要循环:


print(data['data']['asia'])

如果您确实想遍历每个项目,请使用items():


for region, matches in data['data'].items():

    print(region)

    print(matches)


查看完整回答
反对 回复 2022-05-19
?
RISEBY

TA贡献1856条经验 获得超5个赞

下载数据太大。6.2M 更改 jupyter notebook 配置文件。(jupyter_notebook_config.py) 编辑 ~/.jupyter/jupyter_notebook_config.py


如果找不到文件,$ jupyter notebook --generate-config


打开文件并编辑。


c.NotebookApp.iopub_data_rate_limit = 10000000


并重新启动 $ jupyter 笔记本。


url = "http://api.isportsapi.com/sport/free/football/odds/main?api_key=" + api_key



# Call iSport Api to get data in json format

f = urllib.request.urlopen(url)

content = f.read()


#print(content.decode('utf-8'))

data = json.loads((content.decode('utf-8')))

print( data['data']['asian'])

# there is no 'asia' field in that content.

输出是


[{'matchId': '4196461', 'companyId': '1', 'initialHandicap': '-0.25', 'initialHome': '0.78', 'initialAway': '1.02', 'instantHandicap': '-0.25', 'instantHome': '0.78', 'instantAway': '1.02', 'modifyTime': 1567434821, 'close': False, 'inPlay': False}, {'matchId': '4196461', 'companyId': '3', 'initialHandicap': '-0.25', 'initialHome': '0.91', 'initialAway': '0.91', 'instantHandicap': '-0.25', 'instantHome': '0.81', 'instantAway': '1.09', 'modifyTime': 1567709243, 'close': False, 'inPlay': True}, {'matchId': '4196461', 'companyId': '8', 'initialHandicap': '-0.25', 'initialHome': '0.85', 'initialAway': '1.00', 'instantHandicap': '-0.25', 'instantHome': '0.80', 

...


查看完整回答
反对 回复 2022-05-19
  • 2 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信