2017-08-18 22 views
-4

我试图将XML解析为Python中的表格式结构。 想象一下这样的XML:将XML解析为Python中的表格

<?xml version="1.0" encoding="UTF-8"?> 
<base> 
    <element1>element 1</element1> 
    <element2>element 2</element2> 
    <element3> 
    <subElement3>subElement 3</subElement3> 
    </element3> 
</base> 

我想有结果是这样的:

KEY      | VALUE 
base.element1    | "element 1" 
base.element2    | "element 2" 
base.element3.subElement3 | "subElement 3" 

我使用xml.etree.cElementTree尝试,那么在这里描述How to convert an xml string to a dictionary in Python?

功能有没有什么功能可以做到这一点?我发现的所有答案都是为特定的XML方案编写的,并且需要为每个新的XML方案进行编辑。 作为参考,在R中使用XML和XML2包以及xmlToList函数很容易。

+1

那么你试过了什么,它的问题究竟是什么? – jonrsharpe

+0

你可能会对https://stackoverflow.com/questions/2148119/how-to-convert-an-xml-string-to-a-dictionary-in-python感兴趣。 – amonowy

+0

@jonrsharpe我试着用xml.etree.cElementTree解析它,然后在这里描述函数https://stackoverflow.com/questions/2148119/how-to-convert-an-xml-string-to-a-dictionary-in- python和我只是想知道是否有一个简单的函数类似于在R中的一个。我是Python新手,不正常使用它,我发现所有的教程都是为特定的XML模式编写的,并且需要编辑对于任何其他。我不使用R的原因是我相信Py可以更快。 –

回答

1

我已经得到了使用以下脚本所需的结果。

XML文件

<?xml version="1.0" encoding="UTF-8"?> 
<base> 
    <element1>element 1</element1> 
    <element2>element 2</element2> 
    <element3> 
    <subElement3>subElement 3</subElement3> 
    </element3> 
</base> 

Python代码

import pandas as pd 
from lxml import etree 

data = "C:/Path/test.xml" 

tree = etree.parse(data) 

lstKey = [] 
lstValue = [] 
for p in tree.iter() : 
    lstKey.append(tree.getpath(p).replace("/",".")[1:]) 
    lstValue.append(p.text) 

df = pd.DataFrame({'key' : lstKey, 'value' : lstValue}) 
df.sort_values('key') 

结果

Python result