Почему dateutil.parser.parse () неверно указывает год в этой строке? - PullRequest
1 голос
/ 07 апреля 2019

Я работаю над анализом файлов журналов, которые имеют переменные форматы даты и времени в своих временных метках. Я передаю эту строку: 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 Ответ

2 голосов
/ 07 апреля 2019

Парсер игнорирует router, но не 1 рядом с ним.Это можно проверить, передав аргумент fuzzy_with_tokens=True.В результате получается кортеж с первым элементом в качестве представления объекта datetime для метки времени и вторым элементом в качестве игнорируемых строк.

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'))
...