我正在尝试按以下方式生成网址:
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年。我做错了什么?我该如何解决这个问题?
答案 0 :(得分:6)
您可以使用字符串格式:
if let imageString = arrDict[indexPath.row] .valueForKey("image") as? String {
//Now you have a String
// Now make a UIImage from URL and insert it.
}
<强>更新强>
根据OP的评论在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
中传递这些网址:
requests.get
答案 1 :(得分:4)
使用列表推导来创建不同的URL,而不是使用URL来加入字符串。
~/.android/debug.keystore
然后你仍然可以使用>>> ["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']
将所有这些连接到一个大字符串,你喜欢。
答案 2 :(得分:1)
很好理解为什么会这样。 为此,您需要了解连接函数,请查看docs
将单词列表或元组连接起来 九月
这意味着您的url参数将在您要连接的单词之间重复,这将导致上面的输出,第一个元素没有url。 你想要的不是使用join,就是连接你正在使用年份的字符串。
为此你可以使用不同的方法,如已经回答的那样。 您可以使用@AKS指出的字符串格式,它应该可以工作。
答案 3 :(得分:1)
您可以使用更清晰,更强大的字符串格式,如下所示
fmt = "http://ergast.com/api/f1/{y}/qualifying?limit=10000"
urls = [fmt.format(y=y) for y in range(2000, 1016)]
在你的代码中,使用str.join
是有问题的,因为它的语义与你想要完成的语义不同。 s.join(ls)
,按list
ls
加入str
s
的项目。如果ls = [l1, l2 ,...]
,则返回str(l1) + s + str(l2) + s..