循环时动态字符串格式化 - python

时间:2018-01-19 09:21:37

标签: python string loops string-formatting

我一直在寻找一种优雅的方式来动态格式化 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

任何帮助都将受到高度赞赏

2 个答案:

答案 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))