【问题标题】:Python - XML: Separating siblings per parentPython - XML:每个父母分离兄弟姐妹
【发布时间】:2020-05-14 19:29:19
【问题描述】:

目前我正在努力寻找正确的答案,所以如果有人可以帮助我解决这个问题,那就太好了。我有一个更深层次的 XML,我想将其转换为表格。 XML 看起来像这样:

<Motherofall>
 <Parent>
  <Child>
   <val1>XX1</val1>
  <Child2>
   <val2>YY1</val2>
   <val2>YY2</val2>
  <Child2>
   <val2>YY3</val2>
   <val2>YY4</val2>
 </parent>
+<parent>
+<parent>
</Motherofall>

所以最终我想要的输出将是一个包含列 val1 和 colmun val2 的表。 所以 val1 每个父母重复两次。

Picture of table as pictured

import xml.etree.ElementTree as et

tree = et.parse(last_file)
for node in tree.findall('.//Parent'):
    XX = node.find('.//Child')
    print(XX.text)
for node2 in tree.findall('.//Child2'):
        YY = node2.find('.//val1')
        print(YY.text)

可能有人会注意到我对此很陌生,但是我找不到合适的答案。

【问题讨论】:

  • 发布有效的xml数据

标签: python xml elementtree celementtree


【解决方案1】:

我开始为您的输入文件添加一些命令(例如添加 缺少结束标签),因此它包含:

<Motherofall>
    <parent>
        <Child>
            <val1>XX1</val1>
        </Child>
        <Child2>
            <val2>YY1</val2>
            <val2>YY2</val2>
        </Child2>
        <Child2>
            <val2>YY3</val2>
            <val2>YY4</val2>
        </Child2>
    </parent>
    <parent>
        <Child>
            <val1>XX2</val1>
        </Child>
        <Child2>
            <val2>YY1</val2>
            <val2>YY2</val2>
        </Child2>
        <Child2>
            <val2>YY3</val2>
        </Child2>
    </parent>
</Motherofall>

代码的初始部分是读取XML:

import xml.etree.ElementTree as et

tree = et.parse('Input.xml')
root = tree.getroot()

然后要从中读取数据并创建一个 Pandas DataFrame,您可以运行:

rows = []
for par in root.iter('parent'):
    xx = par.findtext('Child/val1')
    for vv in par.findall('Child2/val2'):
        tt = vv.text
        rows.append([xx, tt])
df = pd.DataFrame(rows, columns=['x', 'y'])

结果是:

     x    y
0  XX1  YY1
1  XX1  YY2
2  XX1  YY3
3  XX1  YY4
4  XX2  YY1
5  XX2  YY2
6  XX2  YY3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    相关资源
    最近更新 更多