Анализ Python с использованием strptime - Часы месяца месяца: Минута: Секунды Часовой пояс года - Не соответствует формату

Вопрос задан: 11 месяцев назад Последняя активность: 11 месяцев назад
up 0 down

У меня проблемы с анализом «3 марта, 03:00:04 по Гринвичу» с python (datetime.datetime.strptime). Я не могу понять, в чем проблема. Сначала я думал, что это потому, что день не был заполнен нулями, но согласно документам, которые я нашел, это не так.

import datetime
datetime.datetime.strptime("%b  %d %H:%M:%S %Y %Z", "Mar  3 03:00:04 2019 GMT")

Я попытался удалить и добавить пробел в строку формата. Я также попытался обойтись без спецификатора часового пояса, но не повезло. Формат, который я пытаюсь проанализировать, прибывает из метода сокета ssl getpeercert.

ValueError                                Traceback (most recent call last)
<ipython-input-14-a9f4aa24cc39> in <module>
----> 1 datetime.datetime.strptime("%b  %d %H:%M:%S %Y %Z", "Mar  3 03:00:04 2019 GMT")

/usr/lib/python3.7/_strptime.py in _strptime_datetime(cls, data_string, format)
    575     """Return a class cls instance based on the input string and the
    576     format string."""
--> 577     tt, fraction, gmtoff_fraction = _strptime(data_string, format)
    578     tzname, gmtoff = tt[-2:]
    579     args = tt[:6] + (fraction,)

/usr/lib/python3.7/_strptime.py in _strptime(data_string, format)
    357     if not found:
    358         raise ValueError("time data %r does not match format %r" %
--> 359                          (data_string, format))
    360     if len(data_string) != found.end():
    361         raise ValueError("unconverted data remains: %s" %

ValueError: time data '%b  %d %H:%M:%S %Y %Z' does not match format 'Mar  3 03:00:04 2019 GMT'

Какую строку формата мне следует использовать?

2 ответа

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Реклама

up 1 down accepted
datetime.datetime.strptime(date_string, format)

Точный синтаксис должен быть таким, как указано выше. Изменение порядка аргументов будет работать.

datetime.datetime.strptime("Mar  3 03:00:04 2019 GMT","%b  %d %H:%M:%S %Y %Z")
datetime.datetime(2019, 3, 3, 3, 0, 4)
up 1 down

Вам нужно перевернуть арги, т.е.

import datetime
datetime.datetime.strptime("Mar  3 03:00:04 2019 GMT", "%b  %d %H:%M:%S %Y %Z")