ValueError:未转换的数据仍然是:02:05

时间:2013-12-02 12:07:32

标签: python date datetime python-2.7

我在json文件中有一些日期,我正在搜索与今天日期相对应的日期:

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') 

我有这样的错误:

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

你有什么建议吗?

5 个答案:

答案 0 :(得分:25)

st的{​​{1}}行的值st = datetime.strptime(st, '%A %d %B')01 01 2013 02:05无法解析此问题。实际上,除了日期之外你还需要一个小时...你需要在你的主力上添加strptime

答案 1 :(得分:6)

你必须解析输入字符串的所有,你不能只忽略部分。

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()

在这里,我们使用更多datetime个对象而不是尝试使用字符串来比较日期与今天的日期。

另一种方法是只传入item['start']字符串的部分(只分出时间),但这里确实没有意义,不能解决所有问题。先迈出一步。

答案 2 :(得分:5)

最佳答案是使用from dateutil import parser

用法:

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())

答案 3 :(得分:1)

这很简单。我错过了json文件中日期的格式,所以我应该写:

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

因为在json文件中日期如下:

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

答案 4 :(得分:1)

  timeobj = datetime.datetime.strptime(my_time, '%Y-%m-%d %I:%M:%S')
  File "/usr/lib/python2.7/_strptime.py", line 335, in _strptime
    data_string[found.end():])
ValueError: unconverted data remains:

就我而言,问题是输入日期字符串中有多余的空格。因此我使用了strip(),它开始起作用。