【问题标题】:Trouble in parsing date using dateutil使用 dateutil 解析日期时遇到问题
【发布时间】:2012-10-18 17:47:25
【问题描述】:

我正在使用 python-dateutil 从字符串中解析日期:

import dateutil.parser
print dateutil.parser.parse('some null string', fuzzy=True).date()
2012-10-18
print dateutil.parser.parse('some 31 Oct 2012 string', fuzzy=True).date()
2012-10-31

我期望dateutil.parser.parse('some null string', fuzzy=True).date() 抛出异常,但它返回当前日期。如果在提供的字符串中找不到日期,有人可以告诉我如何避免获取当前日期吗?

提前致谢。

【问题讨论】:

  • 如果你打开fuzzy,你永远不会得到异常...

标签: python python-2.7 python-dateutil


【解决方案1】:

参见dateutil docs,特别是解析函数(强调我的):

此外,还可以使用以下关键字参数:

默认 如果给定,这必须是一个日期时间实例。解析日期中缺少的任何字段都将从该实例中复制。 默认值是当前日期,00:00:00am

...(剪辑)...

模糊 如果将模糊设置为 True,则字符串中的未知标记将被忽略。

鉴于您已将 fuzzy 设置为 True,因此不会引发异常,因为它只会忽略所有未知标记。并且,由于default 参数没有传递,所以将返回当前日期。

所以解决方案是要么将fuzzy 设置为False,这样无效的格式字符串就会抛出异常;或检查返回的日期时间是否等于当前日期 00:00:00am,以指示转换失败。

【讨论】:

  • 这不再适用,从 v.2.5.0 开始。如果没有找到日期,即使是模糊解析,ValueError 也会被抛出。
猜你喜欢
  • 2014-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多