python批量修改xml文件中的信息
項目場景:
在做目標(biāo)檢測時,重新進(jìn)行標(biāo)注會耗費(fèi)大量的時間,如果能夠批量對xml中的信息進(jìn)行修改,那么將會節(jié)省大量的時間,接下來將詳細(xì)介紹如何修改標(biāo)注文件xml中的相關(guān)信息。
問題描述:
例如:當(dāng)我有一批標(biāo)注好的xml文件,文件格式如下圖所示 :
<?xml version='1.0' encoding='us-ascii'?>
<annotation>
<folder>VOC2012</folder>
<filename>x0y1115.png</filename>
<source>
<database>The VOC2007 Database</database>
<anotation>PASCAL VOC2007</anotation>
<image>flickr</image>
</source>
<size>
<width>2233</width>
<height>2177</height>
<depth>3</depth>
</size>
<segmented>1</segmented>
<object>
<name>[1]</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>1</difficult>
<bndbox>
<xmin>0</xmin>
<ymin>1115</ymin>
<xmax>30</xmax>
<ymax>1145</ymax>
</bndbox>
</object>
</annotation>
}
分析:
可以發(fā)現(xiàn)整個標(biāo)注文件的層級是按照annotation------folder/filename/…/object------name/pose/truncated/difficult/bndbox------xmin/ymin/xmax/ymax這樣的格式來的?,F(xiàn)在我需要修改標(biāo)注目標(biāo)的類別信息(將[1]改成lack),其他信息同理可以修改。Python代碼如下:
解決方案:
import os
import os.path
from xml.etree.ElementTree import parse, Element
#批量修改xml中內(nèi)容
def test():
path = "./datasets/Annotations/" # xml文件所在的目錄
files = os.listdir(path) # 遍歷文件夾下所有文件名稱
for xmlFile in files: # 對所有文件進(jìn)行循環(huán)遍歷處理
path1 = "./datasets/Annotations/"+xmlFile #定位當(dāng)前處理的文件的路徑
newStr = os.path.join(path, xmlFile)
dom = parse(newStr) # 獲取xml文件中的參數(shù)
root = dom.getroot() # 獲取數(shù)據(jù)結(jié)構(gòu)
for obj in root.iter('object'): # 獲取object節(jié)點(diǎn)中的name子節(jié)點(diǎn)(此處如果要換成別的比如bndbox)
name = obj.find('name').text # 獲取相應(yīng)的文本信息
# 以下為自定義的修改規(guī)則,我這里把文本信息為[1]~[5]的內(nèi)容改成lack,依次類推
if name in ['[1]','[2]','[3]','[4]','[5]']:
new_name = 'lack'
elif name in ['[6]','[7]','[8]','[9]','[10]']:
new_name = 'black_point'
elif name in ['[11]','[12]','[13]','[14]','[15]']:
new_name = 'crack'
else:
new_name = 'Satellite_InkDrop'
obj.find('name').text = new_name # 修改
dom.write(path1, xml_declaration=True) # 保存到指定文件
pass
if __name__ == '__main__':
test()
總結(jié)
到此這篇關(guān)于python批量修改xml文件中的信息的文章就介紹到這了,更多相關(guān)python批量修改xml內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用Python讀取Excel表內(nèi)容的詳細(xì)過程
python有多種方式可以去讀取excel文檔的內(nèi)容,下面這篇文章主要給大家介紹了利用Python讀取Excel表內(nèi)容的詳細(xì)過程,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10
Python使用MyQR制作專屬動態(tài)彩色二維碼功能
MyQR是一個能夠生成自定義二維碼的第三方庫,你可以根據(jù)需要生成普通二維碼、帶圖片的藝術(shù)二維碼,也可以生成動態(tài)二維碼。這篇文章主要介紹了Python使用MyQR制作專屬動態(tài)彩色二維碼,需要的朋友可以參考下2019-06-06
pandas dataframe中雙中括號和單中括號的區(qū)別及說明
這篇文章主要介紹了pandas dataframe中雙中括號和單中括號的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Python數(shù)據(jù)庫編程之SQLite和MySQL的實踐指南
這篇文章主要為大家詳細(xì)介紹了Python數(shù)據(jù)庫編程中SQLite和MySQL的相關(guān)操作指南,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03
Python基于域相關(guān)實現(xiàn)圖像增強(qiáng)的方法教程
當(dāng)在圖像上訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)模型時,通過對由數(shù)據(jù)增強(qiáng)生成的更多圖像進(jìn)行訓(xùn)練,可以使模型更好地泛化。本文將為大家介紹Python基于域相關(guān)的圖像增強(qiáng)實現(xiàn)方法,需要的可以了解一下2022-01-01
Python標(biāo)準(zhǔn)庫defaultdict模塊使用示例
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫defaultdict模塊使用示例,本文講解了如何使用defaultdict給字典value元素添加默認(rèn)類型以及defaultdict的兩個使用小案例,需要的朋友可以參考下2015-04-04

