首页 > 解决方案 > 替换保存在列表中的 url 上的日期

问题描述

我有一个包含日期的列表 [ ],保存为字符串(2020-12-01 到 2020-12-31)。我也有以下网址:

"https://api.opap.gr/draws/v3.0/1100/draw-date/{date1:%Y-%m-%d}/{date1:%Y-%m-%d}/draw-id"

我想运行一个“for循环”,它将替换列表中每个元素(日期)的 {date1:%Y-%m-%d} 。到目前为止,我已经创建了以下代码来创建“ValueError: Invalid format specifier”。

from datetime import date, timedelta, datetime
import json, requests

def days_cur_month():
    d1 = date(2020, 12, 1)
    d2 = date(2020, 12, 31)
    delta = d2 - d1

    return [(d1 + timedelta(days=i)).strftime('%Y-%m-%d') for i in range(delta.days + 1)]

print(days_cur_month())

fmt= "https://api.opap.gr/draws/v3.0/1100/draw-date/{date1:%Y-%m-%d}/{date1:%Y-%m-%d}/draw-id"

draws=[]
for i in (days_cur_month()):
    
    url = fmt.format(date1=i)
    r=requests.get(url2)
    html=r.text
    drawIds=json.loads(html)
    print(drawIds)

有没有办法做到这一点?

标签: pythonarraysjsonparsingurl

解决方案


.strftime('%Y-%m-%d')使用str.format时移除conversion

前任:

from datetime import date, timedelta, datetime
import json, requests

def days_cur_month():
    d1 = date(2020, 12, 1)
    d2 = date(2020, 12, 31)
    delta = d2 - d1

    return [(d1 + timedelta(days=i)) for i in range(delta.days + 1)]


fmt= "https://api.opap.gr/draws/v3.0/1100/draw-date/{date1:%Y-%m-%d}/{date1:%Y-%m-%d}/draw-id"

draws=[]
for i in (days_cur_month()):
    url = fmt.format(date1=i)
    print(url)

输出:

https://api.opap.gr/draws/v3.0/1100/draw-date/2020-12-27/2020-12-27/draw-id
https://api.opap.gr/draws/v3.0/1100/draw-date/2020-12-28/2020-12-28/draw-id
https://api.opap.gr/draws/v3.0/1100/draw-date/2020-12-29/2020-12-29/draw-id
https://api.opap.gr/draws/v3.0/1100/draw-date/2020-12-30/2020-12-30/draw-id
https://api.opap.gr/draws/v3.0/1100/draw-date/2020-12-31/2020-12-31/draw-id

或者如果你需要使用.strftime('%Y-%m-%d')Then 更改fmt

fmt= "https://api.opap.gr/draws/v3.0/1100/draw-date/{date1}/{date1}/draw-id"

推荐阅读