为什么 dateutil.parser.parse() 在这个字符串上弄错了年份?

Why does dateutil.parser.parse() get the year wrong on this string?

我正在解析日志文件,这些文件的时间戳中有可变的日期时间格式。我将此字符串: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?

解析器忽略了 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'))