Как заставить parsedatetime игнорировать двоеточие после даты? - PullRequest
1 голос
/ 30 мая 2019

Я читаю строку даты из файла журнала и преобразовываю ее в дату, используя parsedatetime:

c = parsedatetime.Calendar()
d = c.parse("29/May/2019:00:00:00 +0000")

, что дает

(time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=17, tm_min=12, tm_sec=45, tm_wday=2, tm_yday=149, tm_isdst=1), 0)

, где tm_hour, tm_min, tm_sec соответствуют текущему времени, а не 0, как в строке даты, переданной parse.Если я удаляю : после года, я получаю правильный вывод:

d = c.parse("29/May/2019 00:00:00 +0000")

, который дает

(time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=149, tm_isdst=1), 2)

Я не люблю изменять строку даты, потому что это вызываетмне предположить формат даты.

Есть ли способ заставить parse игнорировать : после года?

1 Ответ

0 голосов
/ 30 мая 2019

Да, есть.Вы можете сделать это с помощью метода .replace, например, так:

c = parsedatetime.Calendar()
e = "29/May/2019:00:00:00 +0000"
e.replace(":", " ", 1)
d = c.parse(e)

Первая строка, которую я добавил первой, определяет, что вы хотите проанализировать как переменную, чтобы сделать ее обработку намного проще.Следующая строка сначала находит все экземпляры «:» в строке, как указано в первом аргументе.Второй аргумент определяет, что заменить его, в данном случае, пробелом.Третий (необязательный) аргумент указывает, сколько раз заменить, начиная с левой части строки.Значением по умолчанию для этого аргумента является all, которое заменяет все вхождения этого символа в строке.

Более подробную информацию о методе .replace() можно найти здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...