2011-07-18 36 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