xml文件到csv文件python脚本

2021-03-01 02:58:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个python脚本从xml文件中提取数据

我有一个xml文件,如下所示:

<software>
    <name>Update Image</name>
    <Build>22.02</Build>
    <description>Firmware for Delta-M Series </description>
    <CommonImages>  </CommonImages>
<ModelBasedImages>
    <ULT>
        <CNTRL_0>
             <file type="UI_APP" ver="2.35" crc="1234"/>
             <file type="MainFW" ver="5.01" crc="5678"/>
             <SIZE300>
                <file type="ParamTableDB" ver="1.1.4" crc="9101"/>
             </SIZE300>
        </CNTRL_0>
        <CNTRL_2>
            <file type="UI_APP" ver="2.35" crc="1234"/>
            <file type="MainFW" ver="5.01" crc="9158"/>
        </CNTRL_2>  
    </ULT>
</ModelBasedImages>
</software>

我想要表格格式的数据,比如:

类型ver crc
用户界面应用程序2.35 1234
主要功能5.01 5678
参数表DB 1.1.4 9101
应用程序<1234 主要功能5.01 9158

提取到任何类型的文件csv/doc。。。。在

我试过这个代码:

^{pr2}$

提前谢谢 编辑:xml代码更新。在

1条回答
网友
1楼 ·

使用xpath表达式.//file查找XML文档中的所有<file>元素,然后使用每个元素的属性通过^{}填充CSV文件:

import csv
import xml.etree.ElementTree as ET

tree = ET.parse("Build_40.01 (copy).xml")
root = tree.getroot()

with open('ResidentData.csv', 'w') as f:
    w = csv.DictWriter(f, fieldnames=('type', 'ver', 'crc'))
    w.writerheader()
    w.writerows(e.attrib for e in root.findall('.//file'))

对于示例输入,输出CSV文件如下所示:

^{pr2}$

它对CSV文件使用默认分隔符(逗号)。您可以使用delimiter=' '选项将分隔符更改为DictWriter(),但是,您将无法获得与示例输出相同的格式,它似乎使用了固定宽度字段(但您可能会使用tab作为分隔符)。在

相关问题