【发布时间】:2019-09-24 23:27:53
【问题描述】:
我正在尝试提取每个对象标签的对象、xmin、ymin、xmax 和 xmax 值。
XML
<annotation>
<folder>Plates_Number</folder>
<filename>1.png</filename>
<source>
<database>Unknown</database>
</source>
<size>
<width>294</width>
<height>60</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>2</name>
<pose>Unspecified</pose>
<truncated>1</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>40</xmin>
<ymin>1</ymin>
<xmax>69</xmax>
<ymax>42</ymax>
</bndbox>
</object>
<object>
<name>10</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>67</xmin>
<ymin>3</ymin>
<xmax>101</xmax>
<ymax>43</ymax>
</bndbox>
</object>
<object>
<name>1</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>122</xmin>
<ymin>2</ymin>
<xmax>153</xmax>
<ymax>45</ymax>
</bndbox>
</object>
<object>
<name>10</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>151</xmin>
<ymin>3</ymin>
<xmax>183</xmax>
<ymax>44</ymax>
</bndbox>
</object>
<object>
<name>2</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>186</xmin>
<ymin>4</ymin>
<xmax>216</xmax>
<ymax>47</ymax>
</bndbox>
</object>
<object>
<name>5</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>214</xmin>
<ymin>5</ymin>
<xmax>245</xmax>
<ymax>46</ymax>
</bndbox>
</object>
</annotation>
这是我尝试过的,但没有得到预期的结果
python
import xml.etree.ElementTree as ET
import csv
tree = ET.parse("1.xml")
root = tree.getroot()
# open a file for writing
data = open('test.csv', 'r+')
# create the csv writer object
csvwriter = csv.writer(data)
data_head = []
count = 0
for member in root.findall('object'):
obj = []
bndbox_list = []
if count == 0:
name = member.find('name').tag
data_head.append(name)
bndbox = member[4].tag
data_head.append(bndbox)
csvwriter.writerow(data_head)
count = count + 1
name = member.find('name').text
obj.append(name)
bndbox = member[4][0].text
bndbox_list.append(bndbox)
xmin = member[4][1].text
bndbox_list.append(xmin)
ymin = member[4][2].text
bndbox_list.append(ymin)
xmax = member[4][3].text
bndbox_list.append(xmax)
ymax = member[4][4].text
bndbox_list.append(ymax)
obj.append(bndbox)
csvwriter.writerow(data)
data.close()
我期待 名称 xmin ymin xmax ymax 2 40 1 69 42 10 67 3 101 43 1 122 2 153 45 10 151 3 183 44 2 186 4 216 47 5 214 5 245 46
但我只得到这两个标题
名称 bndbox
没有价值
【问题讨论】:
标签: python xml-parsing