2017-08-18 83 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