gpt4 book ai didi

Python JSON 到 CSV 不起作用

转载 作者:行者123 更新时间:2023-12-01 02:00:56 25 4
gpt4 key购买 nike

我在将 json 转换为 CSV 时遇到问题。我对 JSON 解析有点陌生。我想要的只是从我的 JSON 是一些“漂亮”的 csv。这样我就可以获得可以读取的数据。

我正在努力

f = csv.writer(open('data.csv', 'w+', encoding='utf-8', newline=''))
for item in json_head:
f.writerow(item)

但是我在data.csv中得到的只是

d,a,t,a
i,n,c,l,u,d,e,d
l,i,n,k,s
m,e,t,a

文档中的 Json 模板如下所示

{
"data": {
"type": "string",
"id": "string",
"attributes": {
"createdAt": "string",
"duration": 0,
"gameMode": "string",
"patchVersion": "string",
"shardId": "string",
"stats": {},
"tags": {},
"titleId": "string"
},
"relationships": {
"assets": {
"data": [
{
"type": "string",
"id": "string"
}
]
},
"rosters": {
"data": [
{
"type": "string",
"id": "string"
}
]
},
"rounds": {},
"spectators": {}
},
"links": {
"schema": "string",
"self": "string"
}
},
"included": [
null
],
"links": {
"first": "string",
"previous": "string",
"self": "string",
"next": "string"
},
"meta": {}
}

我通过 API 收到的部分真实 JSON 看起来像这样

{"data":
{"type":"match","id":"bdd8b91c-8866-47f1-b5ee-45de4163d3ad","attributes":{"createdAt":"2018-04-02T12:16:33Z","duration":1806,"gameMode":"squad-fpp","patchVersion":"","shardId":"pc-eu","stats":null,"tags":null,"titleId":"bluehole-pubg"},"relationships":{"assets":{"data":[{"type":"asset","id":"2609ba26-3674-11e8-b808-0a586466e20b"}]},
"rosters":{"data":[
{"type":"roster","id":"80a9215c-bed1-4c11-8ff7-e4c9d643befa"},
{"type":"roster","id":"1457bd01-80f9-45e3-b98f-aa9ea946f6b2"}]},
"rounds":{"data":[]},"spectators":{"data":[]}},"links":{"schema":"","self":"https://api.playbattlegrounds.com/shards/pc-eu/matches/bdd8b91c-8866-47f1-b5ee-45de4163d3ad"}},
"included":[
{"type":"participant","id":"f0d889c7-49e7-4c83-ac0b-d7f23d13e09f","attributes":{"actor":"","shardId":"pc-eu","stats":{"DBNOs":3,"assists":0,"boosts":2,"damageDealt":253.554047,"deathType":"byplayer","headshotKills":1,"heals":0,"killPlace":4,"killPoints":1182,"killPointsDelta":48.6543655,"killStreaks":0,"kills":4,"lastKillPoints":0,"lastWinPoints":0,"longestKill":5,"mostDamage":0,"name":"TheFieryArrow","playerId":"account.e951c5cf324d4153850fb411a13f4e8d","revives":0,"rideDistance":4288.21143,"roadKills":0,"teamKills":0,"timeSurvived":1215,"vehicleDestroys":0,"walkDistance":1508.55408,"weaponsAcquired":0,"winPlace":15,"winPoints":1113,"winPointsDelta":7.15782833}}},
{"type":"participant","id":"5c26da97-6733-49d4-8a56-5dc7513e3c77","attributes":{"actor":"","shardId":"pc-eu","stats":{"DBNOs":0,"assists":0,"boosts":0,"damageDealt":64.68,"deathType":"byplayer","headshotKills":0,"heals":0,"killPlace":93,"killPoints":1111,"killPointsDelta":-14.2245054,"killStreaks":0,"kills":0,"lastKillPoints":0,"lastWinPoints":0,"longestKill":0,"mostDamage":0,"name":"Ritter-Sport","playerId":"account.f704b21b861b4c649ec56a0d688171c8","revives":0,"rideDistance":0,"roadKills":0,"teamKills":0,"timeSurvived":142,"vehicleDestroys":0,"walkDistance":43.5367622,"weaponsAcquired":0,"winPlace":28,"winPoints":1220,"winPointsDelta":-19.1033173}}},

对于开始来说,如果有一种方法可以从特定元素获取数据就足够了,对我来说这些就是这些元素 "type":"participant"我希望得到这样的表格数据

ID                                    |DBNOs | assists | boosts | othercolumns from "stats"
f0d889c7-49e7-4c83-ac0b-d7f23d13e09f | 3 | 0 | 2 |
5c26da97-6733-49d4-8a56-5dc7513e3c77 | 0 | 0 | 0 |

我知道我可以硬编码一些代码来解析它,我只是在寻找每种可能性。

谢谢

最佳答案

当你这样做时

for item in json_head:
f.writerow(item)

它只读取 json 中的键,然后将其作为字符串传递给 writerow 方法,该方法将其视为可迭代的字符并将单个字符写入 csv。

相反,尝试这样做:

for item in json_head:
f.writerow([item, json_head[item])

关于Python JSON 到 CSV 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49639152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com