2017-06-15 8 views
-1

私はここで解決策を見つけるためにしようとしていると、そうでない場合はラッシュのビットで、私は解決策の多くを投稿すると思いますが、前提がある..私は「Pythonの解析JSONシートは、値とインクリメントカウンタを見つける

私はPythonを使用して、インシデントの時間とともにインシデントの名前を含むJSONシートを解析しようとしています。特定の「名前」が表示されるたびに、その日付の増分を1ずつインクリメントする相対カウンタが必要になります。つまり、1日あたりのインシデント発生回数をカウントできます(数分は気にしません)。私は繰り返したいと思う単一のフォルダにいくつかのJSONファイルがあります。 * .json

JSONのexmapleがある:このインスタンスのためにそう

{ 
    "logs" : [ { 
    "other" : "xVKNXCVNsk", 
    "time" : "2017-06-15T01:31:50.412Z", 
    "other2" : "xVKxXCbNsk", 
    "name" : "Alpha Beta: Bingo" 
    }, { 
    "other" : "xVKxXCbNsk", 
    "time" : "2017-06-15T01:31:37.229Z", 
    "other2" : "xVKxXCbNsk", 
    "name" : "Terra Zaba: Bingo" 
    }, { 
    "other" : "xVKxXCbNsk", 
    "time" : "2017-06-15T01:31:37.229Z", 
    "other2" : "xVKxXCbNsk", 
    "name" : "Terra Zaba: Bingo" 
    }] 
} 

、結果は次のようになります。

"Alpha Beta: Bingo": 1 for 2017-06-15 
"Terra Zaba: Bingo": 2 for 2017-06-15 

すべてのヘルプは大歓迎です!

+0

何を試しましたか?あなたの質問にあなたのJSONデータを修正することは、有効なJSONでも有効なPythonデータでもありません。 –

+0

ありがとう@ChihebNexus - JSONは、受け取ったアプリケーションから自動的に出力されます。私はあなたの有益な勧告に従ってそれを修正することを確かめるでしょう。下降票もありがとう。 – dpx

+0

私はあなたの質問をd​​ownvoteしませんでした。どうすれば 'json.loads()'を使うことができ、JSONをPythonのdictにロードします。 –

答えて

0

まず、JSONデータのフォーマットを変更する必要があります。ここにはエラーが含まれています。

質問に答えるために、以下のようにJSONファイルをフォーマットしました。

{ 
    "logs" : [ { 
    "other" : "xVKNXCVNsk", 
    "time" : "2017-06-15T01:31:50.412Z", 
    "other2" : "xVKxXCbNsk", 
    "name" : "Alpha Beta: Bingo" 
    }, { 
    "other" : "xVKxXCbNsk", 
    "time" : "2017-06-15T01:31:37.229Z", 
    "other2" : "xVKxXCbNsk", 
    "name" : "Terra Zaba: Bingo" 
    }, { 
    "other" : "xVKxXCbNsk", 
    "time" : "2017-06-1T01:31:37.229Z", 
    "other2" : "xVKxXCbNsk", 
    "name" : "Terra Zaba: Bingo" 
    }] 
} 

JSONファイルをフォーマットした後、私はその質問に答えることができます。私は、質問を見つけたあなた自身のために判断する必要があるコードを書くとき

import json 
from pprint import pprint 

PATH = r"E:\temp\temp.json" 

def parse_func(f): 
    """ 
    parse the JSON file 
    :param f: the parsed file path 
    :return: the result dict 
    """ 
    parse_Dict = dict() 
    parse_List = list() 
    num_Dict = dict() 

    # load the JSON data to `data ` 
    with open(f) as data_file: 
     data = json.load(data_file) 

    # parse the "name " and the "time " 
    for i in range(0, len(data["logs"])): 
     parse_List.append(data["logs"][i]["name"]) 
     parse_List.append(data["logs"][i]["time"].split("T")[0]) 

    print(parse_List) 

    # change the list to the dict 
    for ii in range(0, len(parse_List), 2): 
     # the "name " and the "time " 
     parse_Dict[parse_List[ii]] = parse_List[ii + 1] 

     # the "name " and the "retry number " 
     if parse_List[ii] not in num_Dict: 
      num_Dict[parse_List[ii]] = 1 
     else: 
      num_Dict[parse_List[ii]] = num_Dict[parse_List[ii]] + 1 
    print(parse_Dict) 
    print(num_Dict) 

    # format the result_Dict 
    result_Dict = dict() 
    for k in parse_Dict.keys(): 
     result_Dict[k] = "%d for %s" % (num_Dict[k], parse_Dict[k]) 

    print(result_Dict) 

parse_func(PATH) 

コード出力は、

['Alpha Beta: Bingo', '2017-06-15', 'Terra Zaba: Bingo', '2017-06-15', 'Terra Zaba: Bingo', '2017-06-15'] 
{'Alpha Beta: Bingo': '2017-06-15', 'Terra Zaba: Bingo': '2017-06-15'} 
{'Alpha Beta: Bingo': 1, 'Terra Zaba: Bingo': 2} 
{'Alpha Beta: Bingo': '1 for 2017-06-15', 'Terra Zaba: Bingo': '2 for 2017-06-15'} 

です。

同じnameの要素があるがtimeと異なる要素がある場合、dict()のキーは一意である必要があるためです。記録方法

たとえば、JSONファイルを変更するとします。

{ 
    "logs" : [ { 
    "other" : "xVKNXCVNsk", 
    "time" : "2017-06-15T01:31:50.412Z", 
    "other2" : "xVKxXCbNsk", 
    "name" : "Alpha Beta: Bingo" 
    }, { 
    "other" : "xVKxXCbNsk", 
    "time" : "2017-06-15T01:31:37.229Z", 
    "other2" : "xVKxXCbNsk", 
    "name" : "Terra Zaba: Bingo" 
    }, { 
    "other" : "xVKxXCbNsk", 
    "time" : "2016-06-1T01:31:37.229Z", 
    "other2" : "xVKxXCbNsk", 
    "name" : "Terra Zaba: Bingo" 
    }] 
} 

"time" : "2016-06-1T01:31:37.229Z",ラインが変わっていました。

出力は、上記のものと異なるを確認してください。注

['Alpha Beta: Bingo', '2017-06-15', 'Terra Zaba: Bingo', '2017-06-15', 'Terra Zaba: Bingo', '2016-06-1'] {'Terra Zaba: Bingo': '2016-06-1', 'Alpha Beta: Bingo': '2017-06-15'} {'Terra Zaba: Bingo': 2, 'Alpha Beta: Bingo': 1} {'Terra Zaba: Bingo': '2 for 2016-06-1', 'Alpha Beta: Bingo': '1 for 2017-06-15'} 

に変更されます。

関連する問題