【问题标题】:Python dateutil parser failsPython dateutil 解析器失败
【发布时间】:2011-10-07 11:28:28
【问题描述】:

我正在尝试解析从电子邮件标题中获取的以下日期字符串:

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)')

第三个失败;我错过了什么明显的东西吗?

【问题讨论】:

  • 你试过parser.parse('...', fuzzy=True)吗?
  • phimuemue,将其添加为答案,我会接受!
  • eryksun,这是个好建议。

标签: python python-dateutil


【解决方案1】:

你试过parser.parse('...', fuzzy=True)吗? (我想它有效:))

【讨论】:

  • 是的,它有效。问题在于“GMT”之后的额外“+00:00”,如下所述。 “模糊”选项会忽略这一点。
【解决方案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)

【讨论】:

  • 但是正确吗?我很难解释元组。例如,“13”在哪里?
  • 这个解析器好像搞糊涂了,认为“Wed”指的是明天的7月20日,也就是最近的星期三。
  • 看起来parsedatetime 总是需要未来的日期。它在源代码中有注释:# if that day and month have already passed in this year, then increment the year by 1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多