您正在尝试的操作不起作用,因为您在迭代过程中没有要建立索引的数组。你只有当前行。但要计算时差,您需要访问当前行和前一行。
相反,我会遍历在对线,像这样:
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