Как импортировать данные XML-файла в csv?

#python #python-3.x

#python #python-3.x

Вопрос:

Я импортирую приведенные ниже данные XML-файла в CSV-файл.

 <State>
<Resident Id="100">
<Name>Sample Name</Name>
    <PhoneNumber>1234567891</PhoneNumber>
    <EmailAddress>sample_name@example.com</EmailAddress>
    <Address>
        <StreetLine1>Street Line1</StreetLine1>
        <City>City Name</City>
        <StateCode>AE</StateCode>
        <PostalCode>12345</PostalCode>
    </Address>
</Resident>
<Resident Id="101">
    <Name>Sample Name1</Name>
    <PhoneNumber>1234567891</PhoneNumber>
    <EmailAddress>sample_name1@example.com</EmailAddress>
    <Address>
        <StreetLine1>Current Address</StreetLine1>
        <City>Los Angeles</City>
        <StateCode>CA</StateCode>
        <PostalCode>56666</PostalCode>
    </Address>
</Resident>
.
.
.
.
</State>
  

Попробовал приведенный ниже код для импорта данных в csv:

 import csv
import xml.etree.ElementTree as  ET
tree = ET.parse("C:/Users/Public/Documents/sam.xml")
root = tree.getroot()
with open('C:/Users/Public/Documents/outp.csv', 'w') as f:
    fieldnames=['Id', 'Name', 'PhoneNumber','EmailAddress','StreetLine1','City',
                'StateCode','PostalCode']
    w= csv.DictWriter(f, fieldnames)
    w.writeheader()
    w.writerows(e.attrib for e in root.findall('.//file'))
  

Я запускаю приведенный выше код в ноутбуке Jupyter (Anaconda), используя Python 3.

Данные не копируются в CSV-файлы. В CSV-файл заполняются только имена столбцов / полей.

Пожалуйста, дайте мне знать, почему данные не заполняются в csv. (Когда я открываю XML-файл в Excel, данные правильные.)

Ожидаемый результат

 Id  Name    PhoneNumber EmailAddress    StreetLine1 City    StateCode   PostalCode
100 Sample Name 1234567891  sample_name@example.com Street Line1    City Name   AE  12345
101 Sample Name1    1234567891  sample_name1@example.com    Current Address Los Angeles CA  56666
  

Комментарии:

1. вы пробовали w.writerows(e.attrib.text for e in root.findall('.//file'))

Ответ №1:

Добрый день!

Я часто работаю с файлами такого рода с XML и CSV. Преобразование CSV в XML не страшно, но то, что вам нужно, потребует от вас создания собственной структуры данных. Образец XML, который вы нам предоставили, взят с этого сайта:

http://blog.appliedinformaticsinc.com/how-to-parse-and-convert-xml-to-csv-using-python/

Эти ребята на самом деле решили это за вас! Прокрутите страницу вниз после примера XML, который вы вставили выше, и вы найдете код python!

Удачи вам в будущем конвертации файлов!

Ethan J.