尝试在python中迭代url时遇到消息错误
我试图通过有选择地获取所获得的json数据输出并将其附加到列表中,从API获取数据。但是,根据API的要求,我正在以YYYY-MM-DD格式迭代日期以获取数据 对于某些日期,我没有收到错误信息,只有消息尝试在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中将其作为异常传递以继续循环,因为它不是错误
{'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"]