ValueError: unconverted data remains: 02:05

匿名 (未验证) 提交于 2019-12-03 08:35:02

问题:

I have some dates in a json files, and I am searching for those who corresponds to today's date :

import  os import time from datetime import datetime from pytz import timezone  input_file  = file(FILE, "r") j = json.loads(input_file.read().decode("utf-8-sig"))  os.environ['TZ'] = 'CET'  for item in j:     lt = time.strftime('%A %d %B')     st = item['start']     st = datetime.strptime(st, '%A %d %B')      if st == lt :         item['start'] = datetime.strptime(st,'%H:%M')  

I had an error like this :

File "/home/--/--/--/app/route.py", line 35, in file.py  st = datetime.strptime(st, '%A %d %B')  File "/usr/lib/python2.7/_strptime.py", line 328, in _strptime  data_string[found.end():])  ValueError: unconverted data remains: 02:05 

Do you have any suggestions ?

回答1:

The value of st at st = datetime.strptime(st, '%A %d %B') line something like 01 01 2013 02:05 and the strptime can't parse this. Indeed, you get an hour in addition of the date... You need to add %H:%M at your strptime.



回答2:

You have to parse all of the input string, you cannot just ignore parts.

from datetime import date, datetime  for item in j:     st = datetime.strptime(item['start'], '%A %d %B %H:%M')      if st.date() == date.today():         item['start'] = st.time() 

Here, we compare the date to today's date by using more datetime objects instead of trying to use strings.

The alternative is to only pass in part of the item['start'] string (splitting out just the time), but there really is no point here, not when you could just parse everything in one step first.



回答3:

Best answer is to use the from dateutil import parser.

usage:

from dateutil import parser datetime_obj = parser.parse('2018-02-06T13:12:18.1278015Z') print datetime_obj # output: datetime.datetime(2018, 2, 6, 13, 12, 18, 127801, tzinfo=tzutc()) 


回答4:

Well it was very simple. I was missing the format of the date in the json file, so I should write :

st = datetime.strptime(st, '%A %d %B %H %M') 

because in the json file the date was like :

"start": "Friday 06 December 02:05", 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!