2017-05-22 8 views
-2

私は非常に大きなJSONファイルを持っています。数千ものシミュレートされたバスケットボールゲームがあります。私は最終的にcsvにそれらを引き出すことができるようにしたいと思いますが、今私がしたいのは、配列を文字列として取得することだけです。JSONから「Player」「Stats」を取り出し

コードはコンパイルされていますが、実行していないようですが、stats = []私は統計情報を空に書き込むように定義しています。ここで

は私のプログラムは、これまでのところです:

"value": 64.8, 
     "valueNoPot": 72, 
     "valueFuzz": 64.8, 
     "valueNoPotFuzz": 72, 
     "valueWithContract": 64.8, 
     "pid": 1, 
     "imgURL": "", 
     "firstName": "Chris", 
     "lastName": "Bosh", 
     "diedYear": null, 
     "stats": [ 
     { 
      "pid": 1, 
      "season": 2015, 
      "tid": 27, 
      "playoffs": false, 
      "gp": 0, 
      "gs": 0, 
      "min": 0, 
      "fg": 0, 
      "fga": 0, 
      "fgAtRim": 0, 
      "fgaAtRim": 0, 
      "fgLowPost": 0, 
      "fgaLowPost": 0, 
      "fgMidRange": 0, 
      "fgaMidRange": 0, 
      "tp": 0, 
      "tpa": 0, 
      "ft": 0, 
      "fta": 0, 
      "pm": 0, 
      "orb": 0, 
      "drb": 0, 
      "trb": 0, 
      "ast": 0, 
      "tov": 0, 
      "stl": 0, 
      "blk": 0, 
      "ba": 0, 
      "pf": 0, 
      "pts": 0, 
      "per": 0, 
      "ewa": 0, 
      "yearsWithTeam": 1, 
      "psid": 0 
     } 
     ] 
:ここ

import os 

#create path for file 
path = os.path.dirname('C:\\tmp\\Season3Playoffs.json') 
#create list for stats for each player 
stat = [] 
#open file 
for filename in os.listdir(path): 
    with open(os.path.join(path, filename), encoding = "UTF-8") as input_file: 
     #go through each line of the file 
     for line in input_file: 
      #if a line has "pid" copy contents to the list stat until "psid" is encountered 
      if line in ('"pid"', '"psid"'): 
       stat.append(line.rstrip('\n')) 
       #print the stat entry 
       print(stat) 
print("program complete") 

は、JSONファイルのセクションは、私は、リストの各要素に保存したいと思っているように見えるものの一例です

そのコードから、 "pid:x"と "psid:"の間のテキストをstat [x]に保存します。

私はなぜそれが配列に書き込まれていないか分からない、どんな助けも大歓迎です!

+3

[jsonモジュール](https://docs.python.org/2/library/json.html)を使用しない理由はありますか? – asongtoruin

+0

私は初心者で、モジュールについて知りません。基本的なPythonスキルを向上させることも考えています。 –

答えて

0

次のような場合があります。

import json 
data = json.loads("""{ 
    "value": 64.8, 
    "valueNoPot": 72, 
    "valueFuzz": 64.8, 
    "valueNoPotFuzz": 72, 
    "valueWithContract": 64.8, 
    "pid": 1, 
    "imgURL": "", 
    "firstName": "Chris", 
    "lastName": "Bosh", 
    "diedYear": null, 
    "stats": [ 
     { 
      "pid": 1, 
      "season": 2015, 
      "tid": 27, 
      "playoffs": false, 
      "gp": 0, 
      "gs": 0, 
      "min": 0, 
      "fg": 0, 
      "fga": 0, 
      "fgAtRim": 0, 
      "fgaAtRim": 0, 
      "fgLowPost": 0, 
      "fgaLowPost": 0, 
      "fgMidRange": 0, 
      "fgaMidRange": 0, 
      "tp": 0, 
      "tpa": 0, 
      "ft": 0, 
      "fta": 0, 
      "pm": 0, 
      "orb": 0, 
      "drb": 0, 
      "trb": 0, 
      "ast": 0, 
      "tov": 0, 
      "stl": 0, 
      "blk": 0, 
      "ba": 0, 
      "pf": 0, 
      "pts": 0, 
      "per": 0, 
      "ewa": 0, 
      "yearsWithTeam": 1, 
      "psid": 0 
     } 
    ] 
}""") 

print(data['stats']) 
関連する問題