[英]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))
如果您需要stepDuration
和stepIndexAtten
,不確定為什么要使用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.