为什么dateutil.parser.parse()在此字符串上输入错误的年份?

时间:2019-04-07 20:06:11

标签: python python-3.x python-dateutil

我正在解析日志文件,该日志文件的时间戳中具有可变的datetime格式。我正在将以下字符串:Feb 22 08:58:24 router1传递给dateutil.parser.parse()来尝试提取时间戳,如下所示:

>>> dateutil.parser.parse('Feb 22 08:58:24 router1', fuzzy=True)
datetime.datetime(2001, 2, 22, 8, 58, 24)

结果为日期:February 22nd, 2001

为什么将这一年解析为2001年而不是当年的2019年?

1 个答案:

答案 0 :(得分:2)

解析器将忽略router,而不忽略其旁边的1。可以通过传递fuzzy_with_tokens=True参数来检查。输出结果是一个元组,其中第一项是时间戳的日期时间对象表示,第二项是被忽略的字符串。

from dateutil import parser
print(parser.parse('Feb 22 08:58:24 router1', fuzzy_with_tokens=True))
#Output:
(datetime.datetime(2001, 2, 22, 8, 58, 24), (' ', ' router'))