XML到csv(like)格式 [英] XML to csv(-like) format
本文介绍了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屋!
查看全文