最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python XML轉(zhuǎn)Json之XML2Dict的使用方法

 更新時間:2019年01月15日 09:54:28   作者:_icrazy_  
今天小編就為大家分享一篇Python XML轉(zhuǎn)Json之XML2Dict的使用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1. Json讀寫方法

def parseFromFile(self, fname):
  """
  Overwritten to read JSON files.
  """
  f = open(fname, "r")
  return json.load(f)


def serializeToFile(self, fname, annotations):
  """
  Overwritten to write JSON files.
  """
  f = open(fname, "w")
  json.dump(annotations, f, indent=4, separators=(',', ': '), sort_keys=True)
  f.write("\n")

2. xml文件的工具包XML2Dict

將xml轉(zhuǎn)換成Python本地字典對象, 訪問子元素和字典常用方法類似,略有不同, 使用 “.”

注: 使用xml2dict庫,需要在本地項目添加 xml2dict.py, object_dict.py,下載鏈接

加載xml文件

from xml2dict import XML2Dict
xml = XML2Dict()
r = xml.parse("待處理文件名.xml") 

xml示例[voc2007格式]:

<annotation>
  <folder>VOC2007</folder>
  <filename>AL_00001.JPG</filename>
  <size>
    <width>800</width>
    <height>1160</height>
    <depth>3</depth>
  </size>
  <object>
    <name>l_faster</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <difficult>0</difficult>
    <bndbox>
      <xmin>270</xmin>
      <ymin>376</ymin>
      <xmax>352</xmax>
      <ymax>503</ymax>
    </bndbox>
  </object>
  <object>
    <name>l_faster</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <difficult>0</difficult>
    <bndbox>
      <xmin>262</xmin>
      <ymin>746</ymin>
      <xmax>355</xmax>
      <ymax>871</ymax>
    </bndbox>
  </object>
  <object>
    <name>r_faster</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <difficult>0</difficult>
    <bndbox>
      <xmin>412</xmin>
      <ymin>376</ymin>
      <xmax>494</xmax>
      <ymax>486</ymax>
    </bndbox>
  </object>
  <object>
    <name>r_faster</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <difficult>0</difficult>
    <bndbox>
      <xmin>411</xmin>
      <ymin>748</ymin>
      <xmax>493</xmax>
      <ymax>862</ymax>
    </bndbox>
  </object>
</annotation>

分析下這個文件的格式:

最外一層被<annotation></annotation>包圍

往里一層是:<file_name></file_name>,<size></size>,<object></object>,其中object是列表,包括name和bndbox,示例訪問annotation下級元素

# -*- coding: utf-8 -*-
from xml2dict import XML2Dict
xml = XML2Dict()
r = xml.parse('Annotations/AL_00001.xml')
for item in r.annotation:
  print item
print '------------'
for item in r.annotation.object:
  print item.name, item.bndbox.xmin, item.bndbox.xmax, item.bndbox.ymin, item.bndbox.ymax

執(zhí)行結(jié)果:

object
folder
size
value
filename
------------
l_faster 270 352 376 503
l_faster 262 355 746 871
r_faster 412 494 376 486
r_faster 411 493 748 862

完整代碼[xml2json]

# -*- coding: utf-8 -*-
from xml2dict import XML2Dict
import json
import glob


def serializeToFile(fname, annotations):
  """
  Overwritten to write JSON files.
  """
  f = open(fname, "w")
  json.dump(annotations, f, indent=4, separators=(',', ': '), sort_keys=True)
  f.write("\n")

def getAnnos(file_name="", prefix=''):
  xml = XML2Dict()
  root = xml.parse(file_name)
  # get a dict object
  anno = root.annotation
  image_name = anno.filename
  item = {'filename': prefix + image_name, 'class': 'image', 'annotations': []}

  for obj in anno.object:

    cls = {'l_faster': 'C1', 'r_faster': 'C2'}[obj.name]
    box = obj.bndbox
    x, y, width, height = int(box.xmin), int(box.ymin), int(box.xmax) - int(box.xmin), int(box.ymax) - int(box.ymin)
    item['annotations'] += [{
        "class": cls,
        "height": height,
        "width": width,
        "x": x,
        "y": y
      }]
  return item

if __name__ == '__main__':
  annotations = []
  anno_name = 'AR_001-550.json'
  files = glob.glob('Annotations/AR_*.xml')
  files = sorted(files)
  # print files.sort()
  for filename in files:
    item = getAnnos(filename, prefix='TFS/JPEGImages/')
    print item
    print '-----------------'
    annotations += [item] #"xmls/AL_00001.xml"
  serializeToFile(anno_name, annotations)


以上這篇Python XML轉(zhuǎn)Json之XML2Dict的使用方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python基于QRCode實現(xiàn)生成二維碼的方法【下載,安裝,調(diào)用等】

    Python基于QRCode實現(xiàn)生成二維碼的方法【下載,安裝,調(diào)用等】

    這篇文章主要介紹了Python基于QRCode實現(xiàn)生成二維碼的方法,結(jié)合實例形式較為詳細(xì)的分析了Python下載,安裝與調(diào)用QRCode實現(xiàn)生成二維碼功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • 淺析python中numpy包中的argsort函數(shù)的使用

    淺析python中numpy包中的argsort函數(shù)的使用

    這篇文章主要介紹了python中numpy包中的argsort函數(shù)的使用,argsort()函數(shù)在模塊numpy.core.fromnumeric中,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2018-08-08
  • wxpython+pymysql實現(xiàn)用戶登陸功能

    wxpython+pymysql實現(xiàn)用戶登陸功能

    這篇文章主要介紹了wxpython+pymysql實現(xiàn)用戶登陸功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python入門教程(三十七)Python中的刪除文件

    Python入門教程(三十七)Python中的刪除文件

    這篇文章主要介紹了Python入門教程(三十七)Python中的刪除文件,在Python中,如果需要刪除文件,必須導(dǎo)入OS模塊,使用os模塊的remove()方法,需要的朋友可以參考下
    2023-05-05
  • python interpolate插值實例

    python interpolate插值實例

    這篇文章主要介紹了python interpolate插值實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • pytest用例間參數(shù)傳遞的兩種實現(xiàn)方式示例

    pytest用例間參數(shù)傳遞的兩種實現(xiàn)方式示例

    pytest提供了許多運行命令以供定制化運行某一類測試用例或者某個測試用例等,下面這篇文章主要給大家介紹了關(guān)于pytest用例間參數(shù)傳遞的兩種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • Python實現(xiàn)網(wǎng)絡(luò)聊天室的示例代碼(支持多人聊天與私聊)

    Python實現(xiàn)網(wǎng)絡(luò)聊天室的示例代碼(支持多人聊天與私聊)

    這篇文章主要介紹了Python實現(xiàn)網(wǎng)絡(luò)聊天室的示例代碼(支持多人聊天與私聊),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python serial串口通信示例詳解

    python serial串口通信示例詳解

    Python的serial庫是一個用于串口通信的強(qiáng)大工具,它提供了一個簡單而靈活的接口,可以方便地與串口設(shè)備進(jìn)行通信,包括與驅(qū)動電機(jī)進(jìn)行通信,這篇文章主要介紹了python serial串口通信,需要的朋友可以參考下
    2023-12-12
  • pytorch中Transformer進(jìn)行中英文翻譯訓(xùn)練的實現(xiàn)

    pytorch中Transformer進(jìn)行中英文翻譯訓(xùn)練的實現(xiàn)

    本文主要介紹了pytorch中Transformer進(jìn)行中英文翻譯訓(xùn)練的實現(xiàn),詳細(xì)闡述了使用PyTorch實現(xiàn)Transformer模型的代碼實現(xiàn)和訓(xùn)練過程,具有一定參考價值,感興趣的可以了解一下
    2023-08-08
  • Python中有幾個關(guān)鍵字

    Python中有幾個關(guān)鍵字

    在本篇文章里小編給大家分享的是一篇關(guān)于Python中關(guān)鍵字個數(shù)的相關(guān)知識點內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06

最新評論

米易县| 固原市| 社旗县| 新化县| 石棉县| 体育| 汤阴县| 仪陇县| 闵行区| 资中县| 阳城县| 洞口县| 秦皇岛市| 吉林省| 哈密市| 同德县| 包头市| 靖宇县| 芜湖县| 镇康县| 溧阳市| 长沙县| 威宁| 利川市| 甘南县| 阿拉善盟| 耿马| 汝南县| 三亚市| 新郑市| 清丰县| 星座| 林周县| 安塞县| 东莞市| 伊春市| 正蓝旗| 湖州市| 类乌齐县| 永丰县| 尚义县|