Pythonはxmlのノード値を一括変更する



最近faster-rcnnで自分のデータを訓練した結果、ラベルは小文字しか使えず、他のものは間違っていることが分かった.大文字でpy-faster-rcnn/tools/../を変更できます.lib/datasets/pascal_voc.pyのコードは、_load_pascal_annotation
    cls = self._class_to_ind[obj.find('name').text.lower().strip()]
  • 1

  • lowerを外してもいいと言っています.
    しかし(ポイントが来ました)、私のラベルにはスペースがあります:screw capなので、xmlファイルの内容を修正するしかありません.直接上コード:の内容を変更する
    # coding=utf-8
    import os
    import os.path
    import xml.dom.minidom
    
    #          
    FindPath = '/home/ubuntu/Desktop/myvoc2007/Annotations/'
    FileNames = os.listdir(FindPath)
    s = []
    xml_path = '/home/ubuntu/Desktop/new/'
    for file_name in FileNames:
        if not os.path.isdir(file_name):  #         ,        
            print file_name
    
        #  xml  
        dom = xml.dom.minidom.parse(os.path.join(FindPath,file_name))
    
        root = dom.documentElement
    
        #      name    
        name = root.getElementsByTagName('name')
        for i in range(len(name)):
            print name[i].firstChild.data
            if name[i] .firstChild.data== 'screw cap':
                name[i].firstChild.data = 'screwnut'
                print '     name'
                print name[i].firstChild.data
        #     xml    
        with open(os.path.join(xml_path, file_name), 'w') as fh:
            dom.writexml(fh)
            print('  name/pose OK!')