XML到csv(like)格式 [英] XML to csv(-like) format

查看:165
本文介绍了XML到csv(like)格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个XML文件,我想转换/导出为csv(喜欢)格式。



示例:

 < root& 
< child>
< Name> John< / Name>
< Surname> Doe< / Surname>
< Name> George< / Name>
< Surname> Washington< / Surname>
< / child>
< / root>

ATM我这样做(打印是为了调试,还没有完成):

 #!/ bin / python env 

import xml.etree.ElementTree as etree

tree = etree.parse('./ foobar.xml')
root = tree.getroot()

elements =('Name','Surname')

for i in elements:
for i in root.iter(i):
print(i.text)

当前输出:

  John 
George
Doe
Washington

get:

  John,Doe 
George,Washington



任何人都可以在这里给我一只手吗?



非常感谢。 >

解决方案

使用xpath和zip()。

 #!python 

import xml.etree.ElementTree as etree

root = etree.parse('./ foobar.xml')。getroot()

for a in zip(root.findall(child / Name),root.findall(child / Surname)):
print(,.join([x.text for x in a]))



如果你想用元素的名称调用flexible。

 #!python 

import xml.etree.ElementTree as etree

child = etree.parse('./ foobar.xml')。getroot()。find('child')

elements =('Name','Surname')

for a in zip(* [child.findall(x)for x in elements]):
print(,.join([x.text for x in a]))


I have an XML file, which I would like to convert / export to a csv(-like) format.

Example:

<root>
  <child>
    <Name>John</Name>
    <Surname>Doe</Surname>
    <Name>George</Name>
    <Surname>Washington</Surname>
  </child>
</root>

ATM I do it like this (the print is for debug, nothing finished yet):

#!/bin/python env

import xml.etree.ElementTree as etree

tree = etree.parse('./foobar.xml')
root = tree.getroot()

elements = ('Name', 'Surname')

for i in elements:
  for i in root.iter(i):
    print(i.text)

Current Output:

John
George
Doe
Washington

The result I would like to get:

John, Doe
George, Washington

Can anyone give me a hand here?

Thank you very much.

解决方案

Use xpath and zip().

#!python

import xml.etree.ElementTree as etree

root = etree.parse('./foobar.xml').getroot()

for a in zip(root.findall("child/Name"), root.findall("child/Surname")):
    print(", ".join([x.text for x in a]))

If you want to call flexible with names of elements.

#!python

import xml.etree.ElementTree as etree

child = etree.parse('./foobar.xml').getroot().find('child')

elements = ('Name', 'Surname')

for a in zip(*[child.findall(x) for x in elements]):
  print(", ".join([x.text for x in a]))

这篇关于XML到csv(like)格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆