Python XML 转换为 JSON数据

Json标注格式

// bool:必须小写的true和false
{"bool":true}
// null:必须小写的null
{"object":null}
  • JSON 规定字符集是UTF-8,字符串必须使用"",Object 的键也必须使用""
  • 数组或对象的最后一个成员,不能加 逗号

数组方式 [ ]

对象方法 { }

json数据格式

XML解析转JSON

如何将JSON数据写入文件

  • ensure_ascii:默认值True,如果dict内含有non-ASCII的字符,则会类似\uXXXX的显示数据,设置成False后,就能正常显示
  • indent:应该是一个非负的整型,如果是0,或者为空,则一行显示数据,否则会换行且按照indent的数量显示前面的空白,这样打印出来的json数据也叫pretty-printed json
  • encoding:默认是UTF-8,设置json数据的编码方式

track的父节点是annotations

格式
主要思路:把XML解析成Python对象,之后将其追加到列表或字典中,再用json.dump输出

import untangle
import os
import json

root_path = 'C:/Users/Desktop/Xml'

files = os.listdir(root_path)
for file in files:
  output_dict = {}
  num = 100
  for i in range(num):
    output_dict[i] = {
      'frame':i,
      'labels':[]
    }

  xml_path = os.path.join(root_path, file)
  obj = untangle.parse(xml_path)
  for track in obj.annotations.track:
    for box in track.box:
      box_json = {}
      frame_number = int(box['frame'])
      box_json['category'] = track['label']
      box_json['box2d'] = {
        'x1':float(box['xtl']),
        'y1':float(box['ytl']),
        'x2':float(box['xbr']),
        'y2':float(box['ybr'])
      }
      output_dict[frame_number]['labels'].append(box_json)

  output_list = []
  for i in range(num):
    output_list.append(output_dict[i])
    
  output_path = os.path.join(root_path, file.split('.')[0] + '.json')
  with open(output_path, 'w', encoding='utf-8') as outfile:
    json.dump(output_list, outfile, ensure_ascii=False,indent=2)

frame

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值