使用dateutil解析日期时遇到麻烦

akh*_*hab 12 python python-2.7 python-dateutil

我使用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
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

jro*_*jro 15

查看dateutil文档,特别是解析函数(强调我的):

此外,还提供以下关键字参数:

default 如果给定,则必须是datetime实例.解析日期中缺少的任何字段都将从此实例中复制.默认值是当前日期,时间为00:00:00 am.

......(剪辑)......

fuzzy 如果将fuzzy设置为True,则将忽略字符串中的未知标记.

既然你已经设置fuzzyTrue,也不例外会被抛出,因为它会简单地忽略所有未知的令牌.并且,由于default参数未通过,将返回当前日期.

因此解决方案将是保持fuzzy设置False,以便无效的格式字符串将引发异常; 或者检查返回的日期时间是否等于00:00:00 am的当前日期,作为转换失败的指示.

  • 从v.2.5.0开始,这已不再适用.如果没有找到日期,即使进行模糊解析,也会引发"ValueError". (3认同)