【发布时间】:2021-07-22 10:12:23
【问题描述】:
我正在尝试从一个文件夹中解析 python 中的多个 json 文件并将它们保存到单个 csv 中。
这是我的“json”文件格式:
{
"width": 4032,
"height": 3024,
"ispano": false,
"objects": [
{
"key": "vERA48mAToOV36JrGge-8w",
"label": "regulatory--no-heavy-goods-vehicles--g2",
"bbox": {
"xmin": 1702.96875,
"ymin": 812.84765625,
"xmax": 2181.375,
"ymax": 1304.54296875
},
"properties": {
"barrier": false,
"occluded": false,
"out-of-frame": false,
"exterior": false,
"ambiguous": false,
"included": false,
"direction-or-information": false,
"highway": false,
"dummy": false
}
},
{
"key": "MXdgK-YrQrSrATvLYkJ7kQ",
"label": "information--dead-end--g1",
"bbox": {
"xmin": 1283.625,
"ymin": 488.7421875,
"xmax": 1739.390625,
"ymax": 1050.57421875
},
"properties": {
"barrier": false,
"occluded": false,
"out-of-frame": false,
"exterior": false,
"ambiguous": false,
"included": false,
"direction-or-information": false,
"highway": false,
"dummy": false
}
}
]
}
我不需要所有信息,所以我浏览了所有子词典。这就是我在 python 中提取数据的方式:
import pandas as pd
import glob
import json
from datetime import datetime
import csv
data = []
root = glob.glob("./labels/*.json")
for single_file in root:
with open(single_file, "r") as f:
json_file = json.load(f)
我像这样在列表中迭代子字典:
for sub_list in json_file["objects"]:
print (sub_info)
lst = []
count = 0
for key, val in sub_list.items():
#print(val)
lst.append([
sub_child["key"],
sub_child["label"],
sub_child["bbox"]["xmin"],
sub_child["bbox"]["ymin"],
sub_child["bbox"]["xmax"],
sub_child["bbox"]["ymax"]
])
#print(lst)
# Add headers
lst.insert(0, ["key","label","xmin","ymin","xmax","ymax"])
dir = "./"
with open(os.path.join(dir,"test.csv"),"w", newline="") as d:
writer = csv.writer(d)
#writer.writerow(lst)
writer.writerows(lst)
count += 1
print('updated csv')
它保存一个名为“test.csv”的 csv 文件,但仅包含最后一行的信息,而不是所有 json 文件中的信息。
我想保存包含所有 json 文件中提到的信息的 csv。
我想要这样的 csv
|文件名 |关键 |标签 |最小 | ymin |最大 | ymax |
包括对应的file_name、key、labels、xmin、ymin。 xmax,ymax。
你能帮我解决我的问题吗?
【问题讨论】:
-
什么是
sub_child? -
不是
machine-learning问题,请不要向无关标签发送垃圾邮件(已删除)。