我有一个类似下面的文件数据,我想计算每个站的两条线之间的时差(这里是PAR和PAY),我的意思是例如PAR我们要计算'7 48 42.64 - 7 48 42.24 '(7 =小时,48 =分钟,42.64是秒)。
2006 03 20 07 47 46.7 32.314 55.843 15.5 4.5
PAR GZ IP 7 48 42.24
PAR GZ IPg 7 48 42.64
PAR GZ EP 7 48 42.34
PAY GZ IPg 7 48 57.96
PAY GZ IP 7 48 57.59
PAY GZ EP 7 48 57.74
在我的代码中,第一行的信息保存在名为“event_REF1”的列表中,并且每行保存到名为“REF1_station”的列表中。它首先搜索'IP'然后搜索'IPg',因为PAR没有问题,但是对于PAY它会产生错误的结果,因为首先我们在该站的数据中有'IPg'。
if (REF1_station[0][2] == "IP "):
earlier = (float(REF1_station[0][3])*3600+
float(REF1_station[0][4])*60+
float(REF1_station[0][5])-
float(event_REF1[3])*3600-
float(event_REF1[4])*60-
float(event_REF1[5]))
if (REF1_station[0][2] == "IPg"):
later = (float(REF1_station[0][3])*3600+
float(REF1_station[0][4])*60+
float(REF1_station[0][5])-
float(event_REF1[3])*3600-
float(event_REF1[4])*60-
float(event_REF1[5]))
error = float((later - earlier)/2)
结果是:
PAR = 0.199999999999
支付= 7.86
答案 0 :(得分:0)
如果您的行始终用空格分隔,那么您可以遍历文件以获得可用格式的所有行,并减去您想要的任何两行。
all_lines = open('your_file.txt', 'r').readlines()
all_lines = [l.split() for l in all_lines]
# Hour is index 3, Minute is 4, seconds is 5