python json 文件转化为txt文件(一个json文件多行读取)

1.json文件 (多行字典形式)

2.python转化脚本

import json  # 引入json模块

txt_file = 'txt/pose1.txt' # 换成自己转换出txt文件名

with open('json/3d.json') as json_file: # 打开json 文件,将文件对象赋值给变量 json_file
                                        # 使用 json_file 变量来读取或写入文件的内容

    with open(txt_file, 'w') as text_file:  # 打开txt文件 赋值给变量text_file
     
        # txt文件头部字段(可换成自己想要的字段)

        text_file.write(
            "frame cameraID trackID alpha width height length lidar_space_X lidar_space_Y lidar_space_Z rotation_lidar_space_y rotation_lidar_space_x rotation_lidar_space_z camera_space_X camera_space_Y camera_space_Z rotation_camera_space_y rotation_camera_space_x rotation_camera_space_z\n")
                                           

        for line in json_file:  # 一行一行读取
            line_data = ""      # 需要存入的行数据赋值为空
            data = json.loads(line)  # 加载每行字典值
            # print(data)

            frame = data.get('name')  # 获得name键的值
            cameraID = '1'   # 将cameraID手动设置为1
 
            rotation_lidar_space_y = '0'  # 以下皆为手动设置值
            rotation_lidar_space_x = '0'
            rotation_lidar_space_z = '0'

            camera_space_X = '0'
            camera_space_Y = '0'
            camera_space_Z = '0'

            rotation_camera_space_y = '0'
            rotation_camera_space_x = '0'
            rotation_camera_space_z = '0'


          # 此部分在提取labels列表中id值 并改变id值
            length_labels = len(data.get('labels'))  # 获得labels键的列表长度
            trackId_list = []                        # 定义一个空列表
            for i in range(0, length_labels): # 在labels列表中循环
                line_tmp = "" 

                trackId = data.get('labels')[i]['id'] # 提取id值
                if trackId in trackId_list:
                    trackId = 3           # 如果再次出现0值 就将此id改为3
                trackId_list.append(trackId)  # 首次出现的id值加入trackId_list中
                trackId_list.sort() # 列表里的id值排序


                alpha = '0'  # 手动赋值

                # 提取labels列表中对应的值
                width = data.get('labels')[i]['box3d']['dimension']['width']
                height = data.get('labels')[i]['box3d']['dimension']['height']
                length = data.get('labels')[i]['box3d']['dimension']['length']

                lidar_space_X = data.get('labels')[i]['box3d']['location']['x']
                lidar_space_Y = data.get('labels')[i]['box3d']['location']['y']
                lidar_space_Z = data.get('labels')[i]['box3d']['location']['z']


                line_tmp = frame + " " + cameraID + " " + str(trackId) + " " + alpha + " " + str(width)[:8] + " " + str(
                    height)[:8] + " " + str(length)[:8] + " " + str(lidar_space_X)[:8] + " " + str(lidar_space_Y)[:8] + " " + str(
                    lidar_space_Z)[:8] + " " + str(rotation_lidar_space_y) + " " + str(rotation_lidar_space_x) + " " + str(
                    rotation_lidar_space_z) + " " + str(camera_space_X) + " " + str(camera_space_Y) + " " + str(
                    camera_space_Z) + " " + str(rotation_camera_space_y) + " " + str(
                    rotation_camera_space_x) + " " + str(rotation_camera_space_z) + "\n"

                line_data += line_tmp  # 先加后等(可以理解为自加)

# =+操作符可以理解为“反转相加”,x =+ y相当于将y和x连接起来,然后将结果赋给x。

# x = 'hello'
# y = 'world'
# x =+ y
# print(x)
# 上述代码输出'worldhello',说明x和y被成功连接起来。

            text_file.write(line_data)
            print(trackId_list)

 3.txt文件 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值