我已经下载了一个包含大量有关足球运动员数据的JSON文件,我希望以.csv获取数据。我大部分时间都是新手!
在过去,我使用此代码在命令提示符中使用一些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;等
答案 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