找到时间差异时出错

时间:2013-12-03 20:47:45

标签: python datetime python-2.7 pycharm

我将以下信息存储在名为Lad.txt的文本文件中。这是名称,开始时间和结束时间,不以逗号分隔,每行都在新行上:

Xantippe 09:00 11:00  
Erica 10:00 12:06  
Marcia 09:30 11:45  
Elizabeth 10:15 12:10  
Angela 11:30 13:45  
Freda 12:00 14:20  
Maria 12:30 14:10  

我使用以下代码尝试计算每个参赛者的开始和结束时间之间的差异,并按升序将结果打印到文件中。但是,我收到以下错误消息:

Traceback (most recent call last):
  File "/Users/pdhalliwelluk/PycharmProjects/Web_Based_Programming/sort_desc.py", line 16, in <module>  
    scores[values[0]] = time_diff(values[1], values[2])
  File "/Users/pdhalliwelluk/PycharmProjects/Web_Based_Programming/sort_desc.py", line 8, in time_diff
    end_dt = datetime.datetime.strptime(end, '%H:%M')  
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_strptime.py", line 328, in _strptime
    data_string[found.end():])
ValueError: unconverted data remains:   

代码如下:

from datetime import datetime


def time_diff(start, end):  
    start_dt = datetime.strptime(start, '%H:%M')  
    end_dt = datetime.strptime(end, '%H:%M')  
    diff = (end_dt - start_dt)  
    return diff.seconds / 60  

scores = {}
with open('Lad.txt') as fin:  
    for line in fin.readlines():  
        values = line.split(' ')  
        scores[values[0]] = time_diff(values[1], values[2])  

with open('sorted.txt', 'w') as fout:  
    for key, value in sorted(scores.iteritems(), key=lambda (k, v): (v, k)):  
        fout.write('%s,%s\n' % (key, value))  

1 个答案:

答案 0 :(得分:0)

尝试将第13行更改为:

values = line.strip().split(' ')