python批量修改xml文件中的信息
項目場景:
在做目標(biāo)檢測時,重新進行標(biāo)注會耗費大量的時間,如果能夠批量對xml中的信息進行修改,那么將會節(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: # 對所有文件進行循環(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é)點中的name子節(jié)點(此處如果要換成別的比如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 Multinomial Naive Bayes多項貝葉斯模型實現(xiàn)原理介紹
這篇文章主要介紹了Python Multinomial Naive Bayes多項貝葉斯模型實現(xiàn)原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09PyTorch 隨機數(shù)生成占用 CPU 過高的解決方法
今天小編就為大家分享一篇PyTorch 隨機數(shù)生成占用 CPU 過高的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01python使用 HTMLTestRunner.py生成測試報告
這篇文章主要介紹了python使用 HTMLTestRunner.py生成測試報告 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10opencv-python 開發(fā)環(huán)境的安裝、配置教程詳解
這篇文章主要介紹了opencv-python 開發(fā)環(huán)境的安裝、配置,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09python3.7 openpyxl 在excel單元格中寫入數(shù)據(jù)實例
這篇文章主要介紹了python3.7 openpyxl 在excel單元格中寫入數(shù)據(jù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09Python腳本修改Maya ASCII文件路徑方法實現(xiàn)
本文主要介紹了Python腳本修改Maya ASCII文件路徑方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02pandas DataFrame 賦值的注意事項說明(index)
這篇文章主要介紹了pandas DataFrame 賦值的注意事項說明(index),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04