[英]Parsing XML in Python finding element
我有一個xml文件(a1.xml)。
<object>
<label id="0">Helmet</label>
<bndbox id="0">
<xmin>295</xmin>
<ymin>304</ymin>
</bndbox>
<label id="1">Person</label>
<bndbox id="1">
<xmin>279</xmin>
<ymin>291</ymin>
</bndbox>
</object>
我想要這種格式
obj = [{'label': 'Helmet', 'xmin': 295, 'ymin': 304},
{'label': 'Person', 'xmin': 279, 'ymin': 291}]
我的代碼如下
import xml.etree.cElementTree as ET
tree = ET.parse('a1.xml')
for subtag in root.findall('object'):
tag = subtag.findall('label').text
x = subtag.findall('xmin').text
y = subtag.findall('ymin').text
如何解決呢?
也許在這里使用XPath語法會有所幫助。 干凈的編碼還將檢查find()
是否不為None,例如
import xml.etree.cElementTree as ET
tree = ET.parse('a1.xml')
labels = tree.findall('.//label')
for label in labels:
label_id = label.get('id')
# find the first bndbox with id set to the same value
bndbox = tree.find('.//bndbox[@id="%s"]' % label_id)
if bndbox is None:
continue
tag = label.text
if bndbox.find('xmin') and bndbox.find('ymin'):
x = bndbox.find('xmin').text
y = bndbox.find('ymin').text
else:
continue
# here you can store tag, x, y in a list or dictionary
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.