簡體   English   中英

將嵌套的 JSON 轉換為 CSV 文件

[英]Convert Nested JSON into CSV File

我想從嵌套的 JSON 文件中創建一個包含“持續時間”和“注意”列的 CSV 文件,如下所示:

[
  {
    "Id": {
        "Address": "",
        "Address": "",
        "Name": "Avg"
    },
    "position": 0,
    "sender": [
        false
    ],
    "Atten": 0,
    "Duration": 5,
    "End": 1645,
    "EndRaw": 16040.395,
    "Index": 0,
    "__v": 0
},
{
    "Id": {
        "local": "",
        "Address": "",
        "trafficPairName": "Avg"
    },
    "position": 0,
    "sender": [
        false
    ],
    "Atten": 1,
    "Duration": 5,
    "End": 1652,
    "EndRaw": 166140.3618,
    "Index": 1,
    "__v": 0
  }
]

我在 for 循環中收到一個錯誤,提示“列表索引必須是整數或切片,而不是 str”。 如何正確解析此 JSON 文件並創建 CSV 文件?

這是我的 Python 代碼:

import json
import csv

with open('averages.json') as f:
    data = json.load(f)

filename = "data.csv"

with open(filename, "w") as file:
    csv_file = csv.writer(file)
    csv_file.writerow(["Duration", "Attention"])
    for item in data["Id"]:
        csv_file.writerow([])

data是字典列表,您需要從每個字典中獲取鍵對的值。

for item in data["pairId"]:
    csv_file.writerow([])

應該

for item in data:
    csv_file.writerow([item.get("stepDuration"), item.get("stepIndexAtten")])

或單行列表理解

csv_file.writerows(([item.get("stepDuration"), item.get("stepIndexAtten")] for item in data))

如果您需要stepDurationstepIndexAtten ,不確定為什么要使用data["pairId"]

這應該適合你,

import json
import csv

with open('averageThroughputVsTime-Aggregated.json') as f:
    data = json.load(f)

fname = "output.csv"

with open(fname, "w") as file:
    csv_file = csv.writer(file)
    csv_file.writerow(["stepDuration", "stepIndexAtten"])
    for key, value in enumerate(data):
      csv_file.writerow([key, value["stepDuration"], value["stepIndexAtten"]])

output.csv

stepDuration,stepIndexAtten
0,5,0
1,5,1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM