[英]Convert XML to CSV file
我有一個像這樣的 XML 文件:
<hierachy>
<att>
<Order>1</Order>
<attval>Data</attval>
<children>
<att>
<Order>1</Order>
<attval>Studyval</attval>
</att>
<att>
<Order>2</Order>
<attval>Site</attval>
</att>
</children>
</att>
<att>
<Order>2</Order>
<attval>Info</attval>
<children>
<att>
<Order>1</Order>
<attval>age</attval>
</att>
<att>
<Order>2</Order>
<attval>gender</attval>
</att>
</children>
</att>
</hierachy>
我正在嘗試將其轉換為這樣的 CSV 文件:
Data,Studyval
Date,Site
Info,age
Info,gender
我的問題是,父名和子名都相同 - 'att'
和'attval'
。 我如何告訴 Python 區分它們並給我輸出?
我試過這個:
import xml.etree.cElementTree as ET
tree = ET.parse('input.xml')
rebase = tree.getroot()
list = []
for att in rebase.findall('att'):
name = att.find('attval').text
for each_att in att.findall('attval'):
try:
val = att.find('attval').text
print name, val
except AttributeError:
print name
它打印了兩次相同的東西。
不要使用findall
函數,因為它會在整個樹中查找 att 標簽。 只需按從上到下的順序迭代樹並獲取其中的相關元素。
from xml.etree import ElementTree
tree = ElementTree.parse('input.xml')
root = tree.getroot()
for att in root:
first = att.find('attval').text
for subatt in att.find('children'):
second = subatt.find('attval').text
print('{},{}'.format(first, second))
這使:
$ python process.py
Data,Studyval
Data,Site
Info,age
Info,gender
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.