尝试在python中迭代url时遇到消息错误

尝试在python中迭代url时遇到消息错误,python,json,api,loops,Python,Json,Api,Loops,我试图通过有选择地获取所获得的json数据输出并将其附加到列表中,从API获取数据。但是,根据API的要求,我正在以YYYY-MM-DD格式迭代日期以获取数据 对于某些日期,我没有收到错误信息,只有消息 {'generated_at': '2018-04-05T06:41:30+00:00', 'message': 'No events scheduled for this date.', 'schema': ''} 我如何在try和except中将其作为异常传递以继续循环,因为它不是错误

我试图通过有选择地获取所获得的json数据输出并将其附加到列表中,从API获取数据。但是,根据API的要求,我正在以YYYY-MM-DD格式迭代日期以获取数据

对于某些日期,我没有收到错误信息,只有消息

{'generated_at': '2018-04-05T06:41:30+00:00',
 'message': 'No events scheduled for this date.',
 'schema': ''}
我如何在try和except中将其作为异常传递以继续循环,因为它不是错误

此外,我无法完全迭代日期和月份值,因为输入应该是MM和DD,但在python3中,我可以指定value=0i 比如

m=03,因此我必须将其指定为仅m=3

d=02,所以我必须将其赋值为d=2

这是我的代码-python3.5.2-ubuntu16.04 完整代码

import requests
import json
import urllib.request
import pprint
m = 0
d = 0
g = []
final = []
循环

我想知道如何对从01到31的所有数字进行迭代,以及如何使用try和,除了我收到的消息中不存在的数据。

url=”http://api.sportradar.us/cricket-t2/en/schedules/2017-0“+m+”-0“+d+”/schedule.json?api_key=vpkypw2wdypr2ujfmt8n526g”


应该有效。

或者您可以先将m转换为文本,根据数字添加一个0,然后将其转换为url。

第一点:不要盲目地假设响应数据中会有一个“sport\u events”键,只需检查您真正拥有的内容即可。您的
resp
变量是一个普通的python dict,它的api文档非常丰富

此外,您还应该在try/except中包装请求(HTTP请求很容易失败…),并在
response.json()
调用之前检查响应状态代码(并在另一个try/except中包装此调用-即使响应中有200个状态代码和应用程序/json内容类型,也不能保证成功)

第二点:不要从整数和字符串格式构建日期,而是使用stdlib的
datetime
模块(或类似的第三部分包装器)和
strftime()
调用将日期对象格式化为字符串

作为旁注,这是:

for i in range(len(a)):
    s.append(a[i]['competitors'])
是一种毫无用处的复杂写作方式:

for item in a:
    s.append(item['competitors'])
其本身可以改写为:

s = [item["competitor"] for item in a]
但我想知道,既然您只使用第一项,为什么还要费心构建此列表,那么您也可以替换此项:

    s = []
   #looping through  json output received 
    for i in range(len(a)):
        s.append(a[i]['competitors'])
    gm = s[0]
与:

    s = []
   #looping through  json output received 
    for i in range(len(a)):
        s.append(a[i]['competitors'])
    gm = s[0]
    gm = a[0]["competitor"]