12

我正在使用 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()抛出一个异常,但它返回当前日期。如果在提供的字符串中找不到日期,有人可以告诉我如何避免获取当前日期吗?

提前致谢。

4

1 回答 1

15

请参阅dateutil docs,特别是 parse 函数(强调我的):

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

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

...(剪断)...

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

鉴于您已设置fuzzyTrue,不会抛出异常,因为它只会忽略所有未知标记。并且,由于default参数未通过,将返回当前日期。

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

于 2012-10-20T13:20:27.887 回答