【发布时间】:2021-06-30 10:04:10
【问题描述】:
假设我们有一个这样的 xml 文件:
<annotation verified="yes">
<folder>Annotation</folder>
<filename>test_file</filename>
<path>voc/JPEGImages/test_file</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>640</width>
<height>480</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>old_name</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>15</xmin>
<ymin>164</ymin>
<xmax>206</xmax>
<ymax>344</ymax>
</bndbox>
</object>
</annotation>
现在我想更改给定 xml 文件中所有对象的名称。
我写了以下函数:
def _rename_objects(tree, path, new_name="new_name"):
root = tree.getroot()
for rank in root.iter('object'):
rank.text = str(new_name)
tree.write(path)
它的作用是将文本放置到对象中。如何替换“名称”中的值?不幸的是,树元素并不能真正用于调试。
<Element 'object' at 0x11235d400>
_rename_objects 之后的新值如下所示:
<segmented>0</segmented>
<object>new_name<name>old_name</name>
<pose>Unspecified</pose>
【问题讨论】: