Python List Comprehensions - 加入 For 循环

新手上路,请多包涵

我正在尝试生成如下 URL:

http://ergast.com/api/f1/2000/qualifying?limit=10000

我正在使用 Python 生成 2000 年到 2015 年的 URL,为此,我编写了以下代码片段:

 url = "http://ergast.com/api/f1/"
year = url.join([str(i) + "/qualifying?limit=10000" + "\n" for i in range(1999, 2016)])
print(year)

输出是:

 1999/qualifying?limit=10000
http://ergast.com/api/f1/2000/qualifying?limit=10000
http://ergast.com/api/f1/2001/qualifying?limit=10000
http://ergast.com/api/f1/2002/qualifying?limit=10000
http://ergast.com/api/f1/2003/qualifying?limit=10000
http://ergast.com/api/f1/2004/qualifying?limit=10000
......
http://ergast.com/api/f1/2012/qualifying?limit=10000
http://ergast.com/api/f1/2013/qualifying?limit=10000
http://ergast.com/api/f1/2014/qualifying?limit=10000
http://ergast.com/api/f1/2015/qualifying?limit=10000

我如何摆脱第一行?我尝试设置范围 (2000, 2016),但同样的事情发生在第一行是 2000 而不是 1999 时。我做错了什么?我怎样才能解决这个问题?

原文由 CodingInCircles 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 537
2 个回答

您可以为此使用字符串格式:

 url = 'http://ergast.com/api/f1/{0}/qualifying?limit=10000'

print('\n'.join(url.format(year) for year in range(2000, 2016)))

# http://ergast.com/api/f1/2000/qualifying?limit=10000
# http://ergast.com/api/f1/2001/qualifying?limit=10000
# ...
# http://ergast.com/api/f1/2015/qualifying?limit=10000

更新:

根据 OP 在 requests.get 中传递这些 url 的评论:

 url_tpl = 'http://ergast.com/api/f1/{0}/qualifying?limit=10000'

# use list coprehension to get all the urls
all_urls = [url_tpl.format(year) for year in range(2000, 2016)]

for url in all_urls:
    response = requests.get(url)

原文由 AKS 发布,翻译遵循 CC BY-SA 3.0 许可协议

不要使用 URL 来连接字符串,而是使用列表理解来创建不同的 URL。

 >>> ["http://ergast.com/api/f1/%d/qualifying?limit=10000" % i for i in range(1999, 2016)]
['http://ergast.com/api/f1/1999/qualifying?limit=10000',
 'http://ergast.com/api/f1/2000/qualifying?limit=10000',
 ...
 'http://ergast.com/api/f1/2014/qualifying?limit=10000',
 'http://ergast.com/api/f1/2015/qualifying?limit=10000']

然后你仍然可以使用 '\n'.join(...) 将所有这些连接到一个大字符串,你喜欢。

原文由 tobias_k 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题