我想将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。
我该怎么做?
答案 0 :(得分:0)
from xml.etree import cElementTree as eT
list_items = list(xml_parsed.iter('listitems')) # where xml_parsed is your parsed content
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))