strptime не может разобрать заданный правильный формат - PullRequest
0 голосов
/ 24 июня 2019

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

У меня есть строка даты / времени, которую я хотел проанализировать: '2019-06-17T05: 35: 30' Я дал ему следующий формат: «% y-% m-% dT% H:% M:% S» Это, очевидно, не совпадает.

Я попытался заменить 'T' на пробел, используя метод замены, и соответственно изменил формат безрезультатно.

tmpTime = eval(data.columns[2])['sleep'][0]['startTime'][:19] #Excluded 
#milliseconds by trimming whatever is after the '.', including the '.' itself.
dt = datetime.strptime(tmpTime, '%y-%m-%dT%H:%M:%S')

---------------- Дисплей ошибок Jupyter ----------------------

ValueError                                Traceback (most recent call last)
<ipython-input-13-a379ef67d5ba> in <module>
     20 tmpTime = eval(data.columns[2])['sleep'][0]['startTime'][:19]
     21 #tmpTime = tmpTime.replace("T"," ")
---> 22 dt = datetime.strptime(tmpTime, '%y-%m-%dT%H:%M:%S')

~\AppData\Local\Programs\Python\Python37\lib\_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,)

~\AppData\Local\Programs\Python\Python37\lib\_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 '2019-06-17T05:35:30' does not match format '%y-%m-%dT%H:%M:%S'

Supposed to parse correctly into a datetime object, fails.

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-13-a379ef67d5ba> in <module>
     20 tmpTime = eval(data.columns[2])['sleep'][0]['startTime'][:19]
     21 #tmpTime = tmpTime.replace("T"," ")
---> 22 dt = datetime.strptime(tmpTime, '%y-%m-%dT%H:%M:%S')

~\AppData\Local\Programs\Python\Python37\lib\_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,)

~\AppData\Local\Programs\Python\Python37\lib\_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 '2019-06-17T05:35:30' does not match format '%y-%m-%dT%H:%M:%S'

1 Ответ

1 голос
/ 24 июня 2019

Ваш формат строки в неправильном регистре для года. Это должно быть обозначено как «% Y». например:

tmpTime =  '2019-06-17T05:35:30'
dt = datetime.strptime(tmpTime, '%Y-%m-%dT%H:%M:%S')
>>>dt
datetime.datetime(2019, 6, 17, 5, 35, 30)

Вы можете найти правильные форматы для анализа даты и времени здесь

...