Convertir XML a CSV usando Python

Vaibhav Vaibhav 14 abril 2022
Convertir XML a CSV usando Python

XML o Extensible Markup Language es un lenguaje de marcado que almacena datos en un documento tanto en formato legible por humanos como por máquina. Tiene una extensión de archivo, .xml.

CSV o Comma Separated Values almacena datos en un documento separados por una coma. Tiene una extensión de archivo, .csv. En este artículo, aprenderemos cómo convertir datos XML a datos CSV usando Python.

Convierta XML a CSV usando Python

Para convertir XML a CSV, podemos usar el módulo xml incorporado en Python.

Este módulo tiene otro módulo, ElementTree, que podemos usar para representar un documento XML como un árbol. Tiene un método parse() que acepta un documento XML como parámetro.

Analiza todo el documento XML y lo almacena en forma de árbol. El árbol tiene un método getroot() que devuelve el elemento raíz del árbol.

Usando un bucle for, podemos iterar sobre el árbol y acceder a los datos usando los nombres de las etiquetas (name, rollnumber y age).

Para comprender la conversión, necesitamos algunos datos XML de muestra. Puede usar los siguientes datos XML y almacenarlos en un archivo llamado input.xml.

El siguiente fragmento de código usará estos datos, y tú también deberías hacerlo para que estemos en la misma página.

<students>
    <student>
        <name>Rick Grimes</name>
        <rollnumber>1</rollnumber>
        <age>15</age>
    </student>
    <student>
        <name>Lori Grimes</name>
        <rollnumber>2</rollnumber>
        <age>16</age>
    </student>
    <student>
        <name>Carl Grimes</name>
        <rollnumber>3</rollnumber>
        <age>14</age>
    </student>
    <student>
        <name>Judith Grimes</name>
        <rollnumber>4</rollnumber>
        <age>13</age>
    </student>
</students>

Consulte el siguiente código de Python para aprender cómo realizar la conversión.

from xml.etree import ElementTree

tree = ElementTree.parse("input.xml")
root = tree.getroot()

for student in root:
    name = student.find("name").text
    roll_number = student.find("rollnumber").text
    age = student.find("age").text
    print(f"{name},{roll_number},{age}")

Producción :

Rick Grimes,1,15
Lori Grimes,2,16
Carl Grimes,3,14
Judith Grimes,4,13
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artículo relacionado - Python XML

Artículo relacionado - Python CSV