您正在嘗試的操作不起作用,因爲您在迭代過程中沒有要建立索引的數組。你只有當前行。但要計算時差,您需要訪問當前行和前一行。
相反,我會遍歷在對線,像這樣:
from datetime import datetime
from itertools import tee, izip
from functools import partial
def pairwise(iterable):
"""Iterate in pairs
>>> list(pairwise([0, 1, 2, 3]))
[(0, 1), (1, 2), (2, 3)]
"""
a, b = tee(iterable)
next(b, None)
return izip(a, b)
def parse_time(time_str, time_format='%H:%M:%S.%f'):
return datetime.strptime(time_str, time_format)
with open('foo.txt') as f:
for (time0, flag0), (time1, flag1) in pairwise(line.split() for line in f):
delta = parse_time(time1) - parse_time(time0)
print '{} {}-{}'.format(delta.total_seconds(), flag1, flag0)
這使得在浮動的時間差,你可以隨時轉/如果你想截斷它。注意我沒有看到如何在你的例子中獲得最後一行80秒,不應該是50秒嗎?
來源
2014-11-04 12:12:17
wim
簡直太棒了! – Tito 2014-11-04 12:27:59