无法正确读取 api json 数据

我成功地提取了我在代码前半部分所需的匹配数据,但我似乎无法完成另一部分。我正在读取 JSON 数据并以同样的方式进行操作,但我得到的是字符串,而不是带有数据的字典。我确定这是一个逻辑问题或什么的,请帮助我。我的 github 上有工作部分:https ://github.com/LEvinson2504/Football-Prediction-and-analysis


import urllib.request

import json


#Match odds

#!/usr/bin/python

# -*- coding: utf-8 -*-

import urllib.request


def 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喜欢她,对不起我无法格式化。


但我什么也得不到


慕仙森
浏览 142回答 2
2回答

呼如林

首先,当提出问题时,请花时间整理它,以便它代表您实际运行的内容并删除任何注释掉的代码。在您的情况下,问题可以简化为:f = urllib.request.urlopen(url)content = f.read()data = json.loads((content.decode('utf-8')))#here is the problem, tried several ways to access datafor 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)

RISEBY

下载数据太大。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 formatf = 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', ...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python