特定XML解析器到Python中的csv

时间:2019-06-25 16:11:38

标签: xml python-3.x csv parsing

我想将xml文件解析为一个列表,然后将该列表转换为一个csv文件。 xml的格式如下。

<?xml version="1.0" encoding="utf-8"?> <piadocument title="USPTO-Dokument #8,027,927" guid="111126b1-f927-9bd6-9024-d18a79aaa28e">   <meta>
<list name="Inventors">
<listitem>Deeley, Simon;Bristol</listitem>
<listitem>, Stansfield, Anthony;Bristol</listitem>
</list>
<list name="Claims">
<listitem>1. An on-line system for printing ...</listitem>
<listitem>18. An on-line system for printing value bearing ...</listitem>
</list>   
</meta>  
<chapters /> 
</piadocument>

我对列表名称=“ Claims”感兴趣,并希望将每个listitem写入csv文件的单独一行中。 我对解析xml文件很熟悉,但是我不知道如何到达列表名称的类型。

编辑:我再次查看了我的xml文件集合,发现列表名称Claims不仅仅具有属性listitem。因此,我无法筛选列表项,但需要指定列表名称Claims。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

  1. 您应该阅读文件的内容,然后将其解析为xml,以供我使用: from xml.etree import cElementTree as eT
  2. 然后,如果您仅对“索赔”感兴趣,则可以使用以下方法直接遍历列表: list_items = list(xml_parsed.iter('listitems')) # where xml_parsed is your parsed content
  3. 如果您拥有list_items,则可以在每个元素上使用.text来获取其内容。

答案 1 :(得分:0)

我自己解决了这个问题:

from xml.etree import cElementTree as ET
import os
from time import time
t0=time()
import pandas 
InputPfad_der_xml_Dateien = "./"

claim = []
kategorie = []

for xml_file in os.listdir(InputPfad_der_xml_Dateien):
        root = ET.parse(InputPfad_der_xml_Dateien + xml_file).getroot()

        list_items = root.findall("meta/list")
        list_items_claims =[]

        for i in list_items:
            if i.get("name") == "Claims":
                list_items_claims.append(i)

        for i in list_items_claims:
            for e in i:
                claim.append(e.text)
                kategorie.append("Prozess")

data = []
data.append(claim)
data.append(kategorie)

a = pandas.DataFrame(data=data)
data1 = pandas.DataFrame.transpose(a)

pandas.DataFrame(data=data1).to_csv("./classified_claims_prozess.csv", sep=';', header=["Claim", "Category"], index = False)

print("\n\nTime: %i seconds." % (time() - t0))