我是新来的,我一直在尝试创建一个小python脚本来将xml转换为csv。根据我在Stackoverflow上阅读的各种帖子,我设法想出了一个可以正常工作的示例代码。。然而,我试图处理的数据有多个层次,因此我不确定如何在叶级提取数据。在
以下是数据的外观:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transmission>
<TransmissionBody>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6>
<ColA>ABC</ColA>
<ColB>123</ColB>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
</TransmissionBody>
</Transmission>
我尝试使用下面的代码尝试将xml转换为csv
^{pr2}$然而,这个代码只是从第二层提取,而不是从第六层提取可乐。在
预期输出:
Transmission,TransmissionBody,level1,level2,level3,level4,level5,level6,ColA,ColB
,,,,,,,,ABC,123
,,,,,,,,DEF,456
更新代码:
allFiles = glob.glob(folder)
for file in allFiles:
xmllist = [file]
for xmlfile in xmllist:
tree = ET.parse(xmlfile)
root = tree.getroot()
def f(elem, result):
result[elem.tag] = elem.text
cs = elem.getchildren()
for c in cs:
result = f(c, result)
return result
d = f(root, {})
df = pd.DataFrame(d, index=['values'])
你有缩进问题
我想这应该能解决问题。在
如果我正确地理解了您的问题,那么您需要遍历XML树,所以您可能希望有一个递归函数来完成这个任务。如下所示:
输出:
^{pr2}$更新: 我们需要在多个XML文件上执行此操作。我添加了另一个类似于原始文件的ColA,ColB行替换为
代码如下:
以及输出:
相关问题 更多 >
编程相关推荐