2016-08-17 5 views
-1

私は以下のようなファイルデータを持っていますが、私は各局(ここではPARとPAY)の2行の時間差を計算したいと思います。例えば、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」という名前のリストに、各ラインのためです。 PARの場合、最初に 'IP'を検索してから 'IPg'を検索しますが、このステーションのデータに最初に '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

PAY = 7.86

+0

(**「なぜ、このコードが動作しない?」**)助けを求めているデバッグの質問は、それを再現する*特定の問題やエラー*と*最短コード必要*、望ましい行動を含める必要があります* *質問自体に**。 **明確な問題文**のない質問は他の読者には役に立たない。参照:[最小限で完全で検証可能な例を作成する方法](http://stackoverflow.com/help/mcve) – MattDMo

答えて

0

あなたのラインが一貫空白で区切られている場合、あなただけのすべてを取得するには、ファイルを反復処理することができます使用可能な形式の行を取り出し、必要な2行を減算します。

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 
関連する問題