Pythonはxmlのノード値を一括変更する
1402 ワード
最近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()]
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!')