考虑下面的XML
,它只包含两个名为Mydoc
的节点:
<?xml version="1.0" encoding="UTF-8" ?>
<Mydoc Time="2017-01-02"
Period="2017-01-03">
<mycontent ClassID="kinder">
<bibliography>
<Id>
<Num>123456</Num>
</Id>
<Body>
this is some crazy text my friend
</Body>
<myreaders>
<names>
<Id>john</Id>
<value>95</value>
</names>
</myreaders>
<school>
<myclass>
<Id>12</Id>
<name>Laura</name>
</myclass>
<myclass>
<Id>14</Id>
<name>Frank</name>
</myclass>
<myclass>
<Id>144</Id>
<name>Jonny</name>
</myclass>
<myclass>
<Id>222</Id>
<name>Alex</name>
</myclass>
<myclass>
<Id>5443</Id>
<name>Johnny Doe</name>
</myclass>
</school>
</bibliography>
</mycontent>
<mycontent ClassID="preK">
<bibliography>
<Id>
<Num>123456</Num>
</Id>
<Body>
this is another crazy text my friend
</Body>
<myreaders>
<names>
<Id>fritz</Id>
<value>133</value>
</names>
</myreaders>
</bibliography>
</mycontent>
</Mydoc>
我试图使用xml.etree
来解析它,并将每个节点mydoc
放入Pandas
数据帧中的一行。你知道吗
但是,如您所见,有多个名为myclass
的元素,我希望将它们合并到数据帧的一个单元格中。你知道吗
例如,预期的输出(一个Pandas
数据帧,有两行两列)如下所示:
myreaders school
"(john-95)" "(12-Laura),(14-Frank),(144-Johnny),(222-Alex),(5443-Johnny Doe)"
"(fritz-133)" ""
我试着玩xpath
,但是我无法将我的xpath
查找组合成一个像"(12-Laura),(14-Frank),(144-Johnny),(222-Alex),(5443-Johnny Doe)"
这样的字符串化列表
有什么建议吗?你知道吗
谢谢!你知道吗
与其他答案类似,略短一点,适用于新添加的节点:
编辑:修改以解决多个案例。你知道吗
您可以尝试XmlToDict,并将您的XML解析为字典/列表,这会使您的尝试变得更加容易。 然后,您可以循环/浏览myclass字典的列表。 希望能有所帮助。你知道吗
它成了一个很好的列表理解装置,但我认为这是你需要的。你知道吗
输出:
没有真正简单的方法来解析xml,您需要对数据结构进行大量的分析。你知道吗
相关问题 更多 >
编程相关推荐