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

4m1*_*4j1 20 python datetime date 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') 
Run Code Online (Sandbox Code Playgroud)

我有这样的错误:

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
Run Code Online (Sandbox Code Playgroud)

你有什么建议吗 ?

Max*_*ant 28

stst = datetime.strptime(st, '%A %d %B')线像01 01 2013 02:05strptime无法解析此.事实上,除了日期之外你还需要一个小时...你需要%H:%M在你的strptime 添加.

  • 当我不小心交换了月份和日期变量时,我遇到了同样的错误。它显示“未转换的数据仍然存在:3”。我以为 3 是一个单位,但它只是解析器完成后剩余的字符串部分。 (2认同)

Mar*_*ers 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()
Run Code Online (Sandbox Code Playgroud)

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

另一种方法是仅通过部分中的item['start']字符串(分裂出去只是时间),但实在是没有点在这里,而不是当你可以只在一个步骤解析一切首位.


anj*_*505 6

最好的答案是使用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())
Run Code Online (Sandbox Code Playgroud)