2016-04-19 24 views
-2

N行の.txtファイルがあります。私は、行番号8を読んでもらいたい、そしてこれらのように見えるの行番号16、:59:20.3635と04:27:文字列を含むファイルから数値を読み取る

2016-04-01 04:27:30.6216 (2283721) (more text) 

2016-04-01 04:59:20.3635 (2283721) (more text) 

は、どのように私は04の値に回復することができ30.6216をし、それらをsubstract?私は、開口部と

txt = open(filename) 
for line in txt: 
    print line 

を使用してファイルを読んでみました。しかし、私は、変数の各行を格納し、その後、私が到達したい行の特定の部分にアクセスする方法がわかりません。私はいくつかのことを試しましたが、これを処理する最も効率的な方法がどれかを知りたいと思います。どうもありがとう!!

+1

あなたはまだそれをGoogleで検索していますか? – Mastrem

+2

類似の投稿をしようhttp://stackoverflow.com/questions/30627810/how-to-parse-this-custom-log-file-in-python –

+2

[The Python Tutorial](https://docs.python。 org/3/tutorial /)を参照してください。あなたの質問の多くに答えます。まだ質問がある場合は、戻ってきて質問してください。 –

答えて

0

私のアプローチは次のとおりです。それがお役に立てば幸い:

import re 
from datetime import datetime 

def get_date_time (t): 
    """ 
    t: date time string; 
    parse date time string, and return datetime 
    """ 
    time_string = re.findall('\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{4}', t)[0] 
    return datetime.strptime(time_string, '%Y-%m-%d %H:%M:%S.%f') 

if __name__ == '__main__':  
    with open('input.txt') as f: 
     src = f.read().split('\n') # split into lines 
     print get_date_time(src[7]) - get_date_time(src[5]) # calculate difference 

出力:

0:31:49.741900 
+0

ありがとう、それは働いた!!出力を秒に変換するにはどうしたらいいですか?私は "strresult = str(result)"を試していますし、次に "列挙すると、(xs)* 60 ** iを列挙します(逆順(strresult.split(": "))))")それは私にミリ秒のための問題を与える! – Pep

+0

秒に変換するには、次のようにします: 'delta = get_date_time(src [7]) - get_date_time(src [5])'; 'print delta.seconds + delta.microseconds/1E6'を実行します。結果は '1909.7419'です – Quinn

0

文字列の配列を作成してから、各行をwhileループで配列に出力させることができます。 whileループは、配列の読み込み量や読み込みを停止するタイミングをチェックします。その後、他の方法を使って特定の行や配列のインデックスを検索し、必要なものを見つけるだけです。手元にあるタスクにもよりますが、他にもたくさんの方法があります。

+1

テキストで回答するだけでなく、コードを追加する。これは将来の読者があなたの答えを最大限に活用するのに役立ちます。 – buczek

0

Pythonがあなたの状況で がちょうど

timestamps =[] 
for line in fh: 
    timestamps.append(line. split()[1]) 
print timestamps, timestamps[0] 

は、あなたもコメントし、他のように、第1のライブラリの日時やはtimedelta関連のビルドを使用して算出/時間デルタを抽出しますが、できるように、文字列を操作する良いです先日、いくつかの行を把握していると思うならば、チュートリアルを読む必要があります。普通に何ができるのかを知る必要があります。

関連する問題