2013-12-03 4 views
0

У меня есть следующая информация, хранящаяся в текстовом файле 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)) 
+0

'readlines()' не раздеться новые линии для вас. – user2357112

+0

@ user2357112 Это то, что вызывает у меня проблемы? Как исправить это? Благодарю. – user3062825

+0

'strip' переходы. (Кроме того, не используйте 'readlines'. Если вам просто нужно перебирать строки,' for line in fin' работает, не читая весь файл в память сразу, если это большой файл.) – user2357112

ответ

0

попробуйте изменить линию 13 к:

values = line.strip().split(' ') 
Смежные вопросы