如何从文件中提取数据?

时间:2016-08-17 15:54:32

标签: python python-2.7

我有一个类似下面的文件数据,我想计算每个站的两条线之间的时差(这里是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

1 个答案:

答案 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