繁体   English   中英

编写具有特定范围的字符串元组(Python)

[英]Writing a tuple of character string with a specific range (Python)

请任何人帮助我编写正确的代码。 我正在尝试创建一个字符串元组,其中包含Microsoft Excel支持的日期范围内的日期,例如(“ 2013-Oct-17”,“ 2100-01-01”)。

我的代码:

import time
import math


DAYS = ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
FULL_MONTHS = ("January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December")


mm_ = tuple(str(date) for date in range(2013-oct-17, 2100-01-01))
print mm_

当我运行它(输出)时,它给我以下错误:

mm_ = tuple(str(date) for date in range(2013-oct-17, 2100-01-01))
TypeError: unsupported operand type(s) for -: 'int' and 'builtin_function_or_method'

使用第三方库dateutil识别不同类型的日期字符串和内置模块datetime 如果不想使用dateutil,则可以使用datetime.datetime.strptime尝试所有可能的格式,然后使用一种可行的格式。 如果要在范围内包含结束日期,则可以删除-timedelta(days=1)

from datetime import timedelta
from dateutil.parser import parse
from dateutil.rrule import rrule, DAILY

dates = tuple(str(dt.date()) for dt in rrule(DAILY, dtstart=parse("2013-oct-17"), until=parse("2100-01-01")-timedelta(days=1)))
print dates

更新 :乔恩·克莱门茨(Jon Clements)在有关dateutil.rrule.rrule的评论中说,更新了代码以利用它。 多亏了他,它现在变成了整洁的四线客车。

有很多库可以帮助您解决此问题。 我发现最有用的是大熊猫。 以下是演示如何解决问题的代码段:

In [481]: import pandas as pd

In [482]: dates = pd.date_range('2013-10-17', '2100-01-01')

In [483]: mm_ = tuple(date.strftime('%Y-%m-%d') for date in dates)

In [484]: mm_[:5]
Out[484]: ('2013-10-17', '2013-10-18', '2013-10-19', '2013-10-20', '2013-10-21')

如注释中所述,您必须输入日期作为字符串。 如果要使用长格式的日期和月份,可以使用:

In [486]: nn_ = tuple(date.strftime('%A %B %d, %Y') for date in dates)

In [487]: nn_[:5]
Out[487]: 
('Thursday October 17, 2013',
'Friday October 18, 2013',
'Saturday October 19, 2013',
'Sunday October 20, 2013',
'Monday October 21, 2013')

请参阅http://docs.python.org/2/library/datetime.html的底部,以获取有关哪些字符代码引用哪些日期格式的列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM