如何用python找出所有json文件中的标签值

背景

在拿到一堆json文件的时候,并不知道这些json文件一共有哪些label值,通过人工找并去重太麻烦了并且容易遗漏,所以希望能通过一个python脚本来完成这一项工作(也可以根据自己的需要计算每一类标签的数量)

json文件如下:
在这里插入图片描述

思路

主要是找到键值为"shapes"的value值,再通过该value值(是一个列表,该列表里面又存放了很多容器)去寻找”label“

代码

import json
import os


def main():
    base_path = "E:/xj/华为项目/代码相关/label_look/json/"
    filelist = os.listdir(base_path)#filelist是json文件夹下面的json文件名(包括扩展名)
    #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 ‘.’ 和’…’即使它在文件夹中。
    filelist.sort()
    print(len(filelist))#输出json文件的数目
    
    # i_count, j_count, k_count = 0, 0, 0
    b=[]#存放label的列表
    for name in filelist:
        # os.path.splitext(“文件路径”) 分离文件名与扩展名;默认返回(fname,fextension)元组,可做分片操作
        filename = os.path.splitext(name)[0]
        filename_suffix = os.path.splitext(name)[1]
        #判断是否为.json文件
        if filename_suffix == ".json":
            fullname = base_path + filename + filename_suffix
            dataJson = json.load(open("{}".format(fullname), encoding='UTF-8'))
            label_name = dataJson["shapes"]
            for _ in label_name:
                b.append(_["label"])#将标签值放进列表里面
            ##计算每个label的数量
            # i, j, k = 0, 0, 0
            #     i = i + 1 if _["label"] == "crack" else i
            #     j = j + 1 if _["label"] == "breakage" else j
            #     k = k + 1 if _["label"] == "corrosion" else k
            
            # i_count = i_count + i
            # j_count = j_count + j
            # k_count = k_count + k
           
        else:
            pass

    #print("crack, breakage, corrosion = " + str(i_count) + ', ' + str(j_count) + ', ' + str(k_count))
    
    print(len(b))#输出去重前的标签数目
    f=set(b)##把列表a强制类型转换成集合,并赋给f完成去重
    print(len(f))#输出去重后的标签数目
    print(f)

if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值