2013-10-17 95 views
1

請任何人都可以幫我編寫正確的代碼。 我正在嘗試創建一個包含Microsoft Excel支持的日期範圍中的日期的字符串的元組,例如(「2013-Oct-17」,「2100-01-01」)。寫一個特定範圍的字符串元組(Python)

我的代碼:

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_ 

它給了我,當我運行它(輸出)以下錯誤:使用第三方庫dateutil用於識別不同類型的日期字符串的

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' 
+2

您需要先學習一些Python語法的基礎知識,恐怕。 – piokuc

+1

錯誤出現在這個「範圍(2013-oct-17,2100-01-01)」中,Python將此解釋爲2013減去內建函數oct減17,並且表示從整數中減去函數是沒有意義的。 –

回答

0

和內置模塊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 

UPDATE:喬恩·克萊門茨的小狗在評論中說,大約dateutil.rrule.rrule,更新代碼利用了。感謝他,它現在是一個整潔的四班輪。

+1

如果你要引入另一個依賴,那麼至少要充分利用:)'from dateutil.rrule import rrule,DAILY; dts = tuple(rrule(DAILY,date(2012,10,1),until = date.today()))'例如 –

+0

@JonClements哦,謝謝,我剛剛看到dateutil通過Google搜索,我會將您的方法添加到我的崗位 –

0

有很多圖書館可以幫助你解決這個問題。我發現最有用的是熊貓。這裏是一個片段演示如何解決你的問題:

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的底部,其中的字符代碼指的日期格式列表。

相關問題