2011-07-18 35 views
3

我試圖解析來自電子郵件標題獲得以下日期字符串:Python的dateutil解析器失敗

from dateutil import parser 
d1 = parser.parse('Tue, 28 Jun 2011 01:46:52 +0200') 
d2 = parser.parse('Mon, 11 Jul 2011 10:01:56 +0200 (CEST)') 
d3 = parser.parse('Wed, 13 Jul 2011 02:00:01 +0000 (GMT+00:00)') 

第三個失敗;我錯過了明顯的東西嗎?

+5

你試過'parser.parse('...',fuzzy = True)'? – phimuemue

+0

phimuemue,加上作爲答案,我會接受它! – Petter

+0

eryksun,這是一個很好的建議。 – Petter

回答

4

你試過了嗎parser.parse('...', fuzzy=True)? (我想它的工作:))

+0

是的,它可以工作。問題在於「GMT」後的額外「+00:00」,如下所示。 「模糊」選項忽略了這一點。 – Petter

2

試試parsedatetime庫。

In [16]: import parsedatetime.parsedatetime as pdt 

In [17]: p = pdt.Calendar() 

In [18]: p.parse("Wed, 13 Jul 2011 02:00:01 +0000 (GMT+00:00)") 
Out[18]: ((2011, 7, 20, 0, 0, 0, 2, 201, -1), 3) 
+1

但這是正確的嗎?我很難解釋這個元組。例如,「13」在哪裏? – Petter

+0

看來這個解析器很混亂,並認爲「週三」是指明天7月20日這是最接近的星期三。 – Petter

+0

看起來像'parsedatetime'總是需要將來的日期。它在源代碼中有一個註釋:'#如果今年的日期和月份已經過去,那麼將年份增加1' – warvariuc