2016-06-11 13 views
-1

ログファイル(preprocstats.log)があり、Python 2.6を使用してJSON形式のファイルを解析する方法を知りたいと思います。ログファイルをJSONに解析するには

ログファイルの入力は次のとおりです。

Preprocessor Profile Statistics (all) 
========================================================== 
Num   Preprocessor Layer  Checks  Exits 
===   ============ =====  ======  ===== 
1    httpinspect  0   1   1 
2     detect  0   33   33 
... (and more rows) 

と私はJSONにそれを解析したい、この出力で、たとえば:

{"Num": 1, "Preprocessor": "httpinspect", "Layer": 0, "Checks": 1, "Exits": 1} 
{"Num": 2, "Preprocessor": "detect", "Layer": 0, "Checks": 33, "Exits": 33} 
... (and the rest of rows) 
+1

SOコード-書き込みもチュートリアルサービスでもありません。 – jonrsharpe

+0

私は知っている、私にこれを行うのに役立ついくつかのドキュメントを送ることができますか?それとも、何を読むことができるか教えてください。私はたくさんのものを探しますが、それは私を助けません。 – fornikador

+0

オフサイトのチュートリアルとドキュメンテーションを探すリクエストもオフトピックです。[ask]を参照してください。 – jonrsharpe

答えて

0

この問題に固有の解決策です。私は3行目が結果のキー値を含んでいるとみなし、5行目から値が始まり、ファイルの最後まで利用可能になると考えました。

import json 
a = open('abc.log','r') 
text = a.read() 
text_as_list = text.split('\n') 
keys = text_as_list[2].split() 
result = [] 
for item in text.split('\n')[4:len(text_as_list)]: 
    temp_dict = {} 
    for i,j in zip(keys,item.split()): 
     if j.isdigit():   
      temp_dict[i] = int(j) 
     else: 
      temp_dict[i] = j 
    result.append(temp_dict) 
print json.dumps(result) 

結果:

は、ここに私のコードです

[{"Layer": 0, "Num": 1, "Preprocessor": "httpinspect", "Exits": 1, "Checks": 1}, 
{"Layer": 0, "Num": 2, "Preprocessor": "detect", "Exits": 33, "Checks": 33}, {}] 
+0

ありがとう、Rahul、これは私が望んだことを行う:) – fornikador

0

これを行うには複数の方法があります。 。私はおそらく.splitlines()メソッドを使用して、行を繰り返し、その内容をスペースで分割するline.split()を使用します。この時点で、あなたは適切と思われる値を割り当てることができます。これらの値にスペースが含まれていても、そのアプローチはそれ以上はうまく機能せず、期待される出力が得られないことがあります。この時点で、split(delimiter)を試してみるか、regexを試してみてください。これを行う正しい方法はありませんが、効率的なものもあるかもしれませんが、あなたはそのアイデアを得ると思います。