将复杂的JSON文件更改为.csv

时间:2015-08-19 18:46:58

标签: python json csv

我已经下载了一个包含大量有关足球运动员数据的JSON文件,我希望以.csv获取数据。我大部分时间都是新手!

您可以在此处找到原始文件:https://raw.githubusercontent.com/llimllib/fantasypl_stats/8ba3e796fc3e73c43921da44d4344c08ce1d7031/data/players.1440000356.json

在过去,我使用此代码在命令提示符中使用一些python代码(我认为!)将一些数据导出到.csv中:

import csv
import json

json_data = open("file.json")
data = json.load(json_data)

f = csv.writer(open("fix_hists.csv","wb+"))

arr = []

    for i in data:
    fh = data[i]["fixture_history"]
    array = fh["all"]
    for j in array:

        try:
            j.insert(0,str(data[i]["first_name"]))
        except:
            j.insert(0,'error')

        try:
            j.insert(1,data[i]["web_name"])
        except:
            j.insert(1,'error')

        try:
            f.writerow(j)
        except:
            f.writerow(['error','error'])

json_data.close()

可悲的是,当我现在在命令提示符下执行此操作时,我收到以下错误:

Traceback (most recent call last): <br/>
 File"fix_hist.py", line 12 (module) <br/>
  fh = data[i]["fixture_history"] <br/>
TypeError: list indices must be integers, not str

这可以修复,还是有另外一种方法可以获取一些数据并将其转换为.csv?特别是&#39;灯具历史&#39;?然后是&#39; First&#39; Name&#39;,&#39; type_name&#39;等

2 个答案:

答案 0 :(得分:1)

我建议使用熊猫。

Pandas具有解析JSON文件的功能。 pd.read_json()

docs:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_json.html

这将直接将JSON文件读入数据帧

答案 1 :(得分:0)

第11行的for循环上有一个不正确的标签。如果您将代码更新为如下所示,则应该无误地运行

import csv
import json

json_data = open("players.json")
data = json.load(json_data)

f = csv.writer(open("fix_hists.csv","wb+"))

arr = []

for i in data:
    fh = data[i]["fixture_history"]
    array = fh["all"]
    for j in array:

        try:
            j.insert(0,str(data[i]["first_name"]))
        except:
            j.insert(0,'error')

        try:
            j.insert(1,data[i]["web_name"])
        except:
            j.insert(1,'error')

        try:
            f.writerow(j)
        except:
            f.writerow(['error','error'])

json_data.close()

确保您已将JSON文件命名为players.json以匹配第4行上的名称。另外,请确保JSON文件和此python文件位于同一目录中。您可以在PyCharm之类的开发环境中运行python文件,也可以cd到终端/命令提示符窗口中的目录,并使用python fileName.py运行它。它将在该目录中创建一个名为fix_hists.csv

的csv文件