用Python将XML解析为表

2024-06-12 13:50:46 发布

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

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

<?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.celementree,然后使用这里描述的函数How to convert an xml string to a dictionary in Python?

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


Tags: to函数base方案xmlelement结构中将
1条回答
网友
1楼 · 发布于 2024-06-12 13:50:46

我用下面的脚本得到了需要的结果。

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

相关问题 更多 >