Как подставить числа в строку?

Как позиционно подставить числа в строку, чтобы получить ссылку с датой определенного формата. Как менять значение год, месяц день, в цикле for, чтобы сохранялась вложенность календаря, проходя от 1 до 30 дня, от 1 до 12 месяца, от 2005 до 2022 года.

Что было сделано?

Подставляю одно число. Пример кода:

url = 'https://www.web.com/year=2022&month=02&day={}'

for i in range(1, 32):
    url_add = url.format(str(i))
    print(url_add)

Пробую подставить несколько чисел.

url = 'https://www.webua.com/year={1}&month={2}&day={3}'
for i1 in range(2005, 2022):
    url_add_1 = url.format(str(i1)) #  https://www.webua.com/year=2005&month={2}&day={1}

    for i2 in range(1, 13):
        url_add_2 = url_add_1.format(str(i2))   #  https://www.webua.com/year=2005&month=1&day={1}

        for i3 in range(1, 32):
            url_add_3 = url_add_2.format(str(i3))       #  https://www.webua.com/year=2005&month=1&day=1
            print(url_add_3)

Пожалуйста помогите разобраться, как правильно написать код используя только цикл for и метод format.


Ответы (1 шт):

Автор решения: CrazyElf

Используйте f-строки, они довольно быстро работают, не нужно экономить на том, чтобы по частям заниматься подстановкой:

url_base = 'https://www.webua.com/'
for year in range(2005, 2022):
    for month in range(1, 13):
        for day in range(1, 32):
            url = f'{url_base}year={year}&month={month}&day={day}'
            print(url)

Ну или если f-строки нельзя, то опять же подставляйте сразу все значения внутри циклов, вам же не нужны промежуточные значения, вы их только для некоей экономии ресурсов вычисляете?

url.format(year, month, day)
→ Ссылка