我一直在寻找一种优雅的方式来动态格式化 Python 中的字符串(URL),同时循环...这适用于我想请求为每个使用不同的查询参数的时候。
例如,这就是我目前所采用的(假设我有3个网址):
for i in range(3):
for num in range(0, 496, 5):
if i == 1:
requests.get('https://my-website.com?pricefrom={}&priceto={}'.format(num, num + 5))
if i == 2:
requests.get('https://my-website.com?qtyfrom={}&qtyto={}'.format(num, num + 5))
# ......... :(
这只是丑陋而且我不想想在我有更多请求链接的情况下我会做些什么。
例如,没有更简单/更优雅的解决方案:
urls = [<url1>, <url2>,....<url50>] # maybe each url has placeholders
for url in urls:
# do some magic
任何帮助都将受到高度赞赏
答案 0 :(得分:0)
你可以按照你的说法在列表中存储格式的字符串:
import requests
urls = ['https://example.com?from={fr}&to={to}',
'https://example1.com?from={fr}&to={to}',
'https://example2.com?from={fr}&to={to}'
]
for url in urls:
for num in range(0, 496, 5):
requests.get(url.format(fr=num, to=num + 5))
同样在python 3.6中,您可以使用f-strings
答案 1 :(得分:0)
感谢@luminousmen和其他人的帮助......我找到了解决方案。显然你可以添加占位符而不对它们进行任何操作:&#39; D:
urls = ['https://example.com?from={}&to={}',
'https://example1.com?from={}&to={}',
'https://example2.com?from={}&to={}']
for url in urls:
for num in range(0, 496, 5):
requests.get(url.format(num, num + 5))