2017-11-11 13 views
1

データを収集するためにCSVに変換しようとしているこのJSONファイルがあります。しかし、私が得た出力は正しいものではありません。Pythonを使用してJSONをCSVに変換する際に問題が発生しました

これまでのところ、私が持っている:JSONデータ(例えば)このタイプの使用

import csv 
import json 
infile = open("top40nl.json", "r") 
outfile = open("top40nl.csv", "w") 

writer = csv.writer(outfile) 

for row in json.loads(infile.read()): 
writer.writerow(row) 

:上記のすべては、これまで働いていた

{ 
    "info": "SQLite Pro Result Set", 
    "data": [ 
     { 
      "top40_SK": "118899", 
      "song_title": "Sorry", 
      "artist": "Justin Bieber", 
      "year_released": "2015", 
      "year": "2016", 
      "week": "1", 
      "position": "1", 
      "prev_position": "1", 
      "weeks_in_top40_v1": "10", 
      "weeks_in_top40_v2": "10", 
      "highest_reached_position": "1", 
      "total_points": "775", 
      "top40url": "https://www.top40.nl/top40/2016/week-1" 
     }, 
     { 
      "top40_SK": "118900", 
      "song_title": "Love yourself", 
      "artist": "Justin Bieber", 
      "year_released": "2015", 
      "year": "2016", 
      "week": "1", 
      "position": "2", 
      "prev_position": "2", 
      "weeks_in_top40_v1": "6", 
      "weeks_in_top40_v2": "6", 
      "highest_reached_position": "1", 
      "total_points": "764", 
      "top40url": "https://www.top40.nl/top40/2016/week-1" 
     } 
    ] 
} 

が、しかし、これは私の出力です: i,n,f,o d,a,t,a

これを解決する方法はありますか?

+0

ようこそSOへ。時間をかけて[ask]を読んでください。例を練習して[チュートリアル](https://docs.python.org/3/tutorial/index.html)を試してみてください。 Pythonが提供するツールについて紹介し、問題解決のためのアイデアを得ることさえできます。 ...あなたは文字列の文字を繰り返しているようです。 – wwii

+0

なぜCSVに変換する必要がありますか? JSONデータを読み込んでアクセスするのはなぜですか? –

答えて

1

を使用して、最も単純なものを行きますそれらをCSVにリストして書き込みます。例を単純にするために、ディスクファイルの代わりにsys.stdoutに出力を書きます。

import json 
import csv 
import sys 

JSON = '''\ 
{ 
    "info": "SQLite Pro Result Set", 
    "data": [ 
     { 
      "top40_SK": "118899", 
      "song_title": "Sorry", 
      "artist": "Justin Bieber", 
      "year_released": "2015", 
      "year": "2016", 
      "week": "1", 
      "position": "1", 
      "prev_position": "1", 
      "weeks_in_top40_v1": "10", 
      "weeks_in_top40_v2": "10", 
      "highest_reached_position": "1", 
      "total_points": "775", 
      "top40url": "https://www.top40.nl/top40/2016/week-1" 
     }, 
     { 
      "top40_SK": "118900", 
      "song_title": "Love yourself", 
      "artist": "Justin Bieber", 
      "year_released": "2015", 
      "year": "2016", 
      "week": "1", 
      "position": "2", 
      "prev_position": "2", 
      "weeks_in_top40_v1": "6", 
      "weeks_in_top40_v2": "6", 
      "highest_reached_position": "1", 
      "total_points": "764", 
      "top40url": "https://www.top40.nl/top40/2016/week-1" 
     } 
    ] 
} 
''' 

data = json.loads(JSON) 

keys = data["data"][0].keys() 
writer = csv.DictWriter(sys.stdout, fieldnames=keys) 
writer.writerow(dict(zip(keys, keys))) 
for d in data["data"]: 
    writer.writerow(d) 

出力

top40_SK,song_title,artist,year_released,year,week,position,prev_position,weeks_in_top40_v1,weeks_in_top40_v2,highest_reached_position,total_points,top40url 
118899,Sorry,Justin Bieber,2015,2016,1,1,1,10,10,1,775,https://www.top40.nl/top40/2016/week-1 
118900,Love yourself,Justin Bieber,2015,2016,1,2,2,6,6,1,764,https://www.top40.nl/top40/2016/week-1 
0

ここでは、私はあなたがCSVは、JSONの代わりに提出する理由を理解するが、ここでは、データのそれぞれからdictsを抽出できる方法ですしていないパンダのライブラリに

import pandas as pd 
import json 

with open('top40nl.json') as fi: 
    data = json.load(fi) 
    df = pd.DataFrame(data=data) 
    df.to_csv('top40nl.csv', index=False) 
関連する問題