我了解 python 编程的基础知识,这是我的问题。我有以下来自英雄联盟(视频游戏)开发者 API 的 json 文件(摘录):
"keys": {
"35": "Shaco",
"36": "DrMundo",
"33": "Rammus",
AND SO ON..
},
"data": {
"Aatrox": {
"tags": [
"Fighter",
"Tank"
],
"stats": {
"attackrange": 150,
"mpperlevel": 45,
"mp": 105.6,
"attackdamage": 60.376,
AND SO ON...
},
AND SO ON.
我的代码:
#import dependencies
#to understand json
import json
#to write csv file
import csv
#to output json in a readable way in the command line
from pprint import pprint
#create the output file
outfile_path='output.csv'
#open up the file and tell the programm to write in it
writer = csv.writer(open(outfile_path, 'w'))
#Create custom headers for the data
headers =['armor', 'armorperlevel', 'attackdamage','attackdamageperlevel','attackrange', 'attackspeedoffset', 'attackspeedperlevel', 'crit', 'critperlevel', 'hp', 'hpperlevel', 'hpregen', 'hpregenperlevel', 'movespeed', 'mp', 'mpperlevel', 'mpregen', 'mpregenperlevel', 'spellblock', 'spellblockperlevel']
writer.writerow(headers)
#open data file, in order to manipulate it
with open('data.json') as data_file:
data = json.load(data_file)
#print stats for the keys Aatrox
aatrox = data['data']['Aatrox']['stats']
pprint(aatrox)
到目前为止我所做的事情:
- 我能够在我的程序中加载该文件
- 我在 csv 文件中创建了自定义 header
- 我能够打印特定“键”的数据(例如:Aatrox)
- 我还可以打印特定“键”的“统计信息”
我现在想做的事情:
- 在 CSV 文件中为每个“键”创建一行,“stats”值以逗号分隔
我相信我能够自己创建一个遍历所有键的循环。然而,我无法找到关于如何以我想要的格式将字典写入 CSV 文件的易于理解的信息。 谁能帮我解决这个问题。我最想了解的是:
- 如何将字典值写入具有特定格式的字符串?
- 如何告诉 python 将字典值放在正确的位置 标题,我已指定?
最佳答案
您可以使用csv.DictWriter
:
import csv
stats = {
"attackrange": 150,
"mpperlevel": 45,
"mp": 105.6,
"attackdamage": 60.376,}
headers =['attackdamage','attackrange', 'mp', 'mpperlevel']
with open('output.csv', 'wb') as f:
writer = csv.DictWriter(
f, headers, delimiter=',', lineterminator='\n', )
writer.writeheader()
writer.writerow(stats)
生成output.csv
:
attackdamage,attackrange,mp,mpperlevel
60.376,150,105.6,45
关于将复杂的 json 转换为 csv 的 Python 程序,适合初学者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32296609/