Я анализирую дату и время из строки в Python. Мне нравится тот факт, что в pandas я могу определить 1 отдельный формат, но pandas все еще позволяет мне быть гибким в своем вводе.
>>> format = '%Y%m%d %H:%M:%S.%f'
>>> pd.to_datetime('20200106 23:00', format=format)
Timestamp('2020-01-06 23:00:00') ## OK
>>> pd.to_datetime('20200106 23:00:00', format=format)
Timestamp('2020-01-06 23:00:00') ## OK
>>> pd.to_datetime('20200106 23:00:00.000', format=format)
Timestamp('2020-01-06 23:00:00') ## still ok
С Pandas я могу принять пользовательский ввод, который выглядит как %H:%M
или %H:%M:%S
, или %H:%M:S.%f
. Пока это не нарушает оригинальный формат, это хорошо. Мне нравится эта гибкость.
Существует ли такое же поведение в datetime?
>>> datetime.strptime('20200106 23:00:00.000000', format)
datetime.datetime(2020, 1, 6, 23, 0) ## OK
>>> datetime.strptime('20200106 23:00:00', format) ## NOT OK
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python3.6/_strptime.py", line 565, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/usr/lib64/python3.6/_strptime.py", line 362, in _strptime
(data_string, format))
ValueError: time data '20200106 23:00:00' does not match format '%Y%m%d %H:%M:%S.%f'
strptime не нравится. Что я должен сделать? Список всех форматов, которые может вставить пользователь? И делать кучу попыток?