Я использую ElementTree xml API для преобразования некоторых данных из локального XML-файла, сохраненного в каталоге, в CSV-файл, XML-файл выглядит следующим образом
<object>
<name>Eosinophil</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>415</xmin>
<ymin>120</ymin>
<xmax>532</xmax>
<ymax>252</ymax>
</bndbox>
</object>
я пытаюсь этот код Python, чтобы сделать это:
def parseXML(xmlfile):
tree = ET.parse(xmlfile)
root = tree.getroot()
mainlist = []
for object in root.findall('.//object'):
records = {}
for bndbox in object:
records[bndbox.tag] = bndbox.text.encode('utf8')
mainlist.append(records)
return mainlist
def savetoCSV(newsitems, filename):
fields = ['name', 'pose', 'truncated', 'difficult', 'xmin','ymin', 'xmax','ymax']
with open(filename, 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames = fields)
writer.writeheader()
writer.writerows(newsitems)
не дает ошибки, а просто создает пустой CSV-файл с правильными заголовками, так как я новичок в этих вещах, я искал ресурсы и думаю, что есть проблема в цикле "object in root.findall", пожалуйста, помогите в это дело.
я вызываю эти функции, как показано ниже
def main():
newsitems = parseXML('My photo - 09-04-2019_10-11-32.xml')
savetoCSV(mainlist, 'sample.csv')
можете ли вы предложить изменения в Xpath, включенные в цикл, наряду с логикой цикла