【问题标题】:Parse XML to Table in Python在 Python 中将 XML 解析为表
【发布时间】:2018-01-27 01:45:24
【问题描述】:

我正在尝试将 XML 解析为 Python 中的类似表的结构。 想象一下这样的 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.cElementTree,然后在 How to convert an xml string to a dictionary in Python? 处描述的函数

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

【问题讨论】:

  • 那么您尝试了哪些方法,具体有什么问题?
  • 您可能对stackoverflow.com/questions/2148119/…感兴趣。
  • @jonrsharpe 我尝试使用 xml.etree.cElementTree 对其进行解析,然后使用此处描述的函数stackoverflow.com/questions/2148119/… 我只是想知道是否有一些类似于 R 中的简单函数。我是Python 新手,不要正常使用它,我发现的所有教程都是为特定的 XML 模式编写的,需要对任何其他模式进行编辑。我不简单地使用 R 的原因是我相信使用 Py 可以更快。
  • editminimal reproducible example说明具体问题。

标签: python xml parsing


【解决方案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')

结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    相关资源
    最近更新 更多