我有像 "2017-05-01", "2017-05-18" 这样的日期范围。所以,我想按每日间隔分割这个范围并得到这样的结果:[["2017-05-01","2017-05-02"], ["2017-05-3","2017-05-04"], ....]

最佳答案

首先,将其分解为两个步骤:

  • 生成从一个日期到另一个日期的每一天
  • 将列表 [a,b,c,d] 转换为对 [[a,b],[c,d]]

  • 第一步,这里有一个答案:Iterating through a range of dates in Python
    其中定义了以下生成器:
    from datetime import timedelta, date
    
    def daterange(start_date, end_date):
        for n in range(int ((end_date - start_date).days)):
            yield start_date + timedelta(n)
    

    如果我们然后使用 the itertools documentation 中的这个定义将它们配对:
    def grouper(iterable, n, fillvalue=None):
        "Collect data into fixed-length chunks or blocks"
        # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
        args = [iter(iterable)] * n
        return zip_longest(*args, fillvalue=fillvalue)
    

    那么我们可以将它们组合在一起以制作所需的生成器:
    daypairs = grouper(daterange(start_date, end_date), 2)
    

    并列出它:
    daypairslist = list(daypairs)
    

    等等。

    关于python - 按天分割日期范围并使用Python制作列表日期间隔列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44071541/

    10-17 03:10