[英]parsing xml file to csv with dynamic xml structure
我一直在学习 python,目前正在解析 XML 文件并转换为 CSV 文件。 我能够迭代 XML 文件,但不需要确定如何存储列值,尤其是当 XML 值不一致时。 XML 文件位置
Output 预期: CSV 文件 output
到目前为止,我有基本的 python 代码,需要帮助我可以根据正确的 csv 列中的数据来存储和打印值:
import xml.etree.cElementTree as ET
file_path = "Candidate.xml"
tree = ET.parse('Candidate.xml')
root = tree.getroot()
print(root.tag, root.attrib)
for child in root:
print(child.tag, child.attrib)
这会有点复杂但可行:
#first collect your data:
data = []
rows = root.findall('.//rows')
for row in rows:
items = [row.attrib['id'],
row.find('./column[@name="Organization"]'),
row.find('./column[@name="Location"]'),
row.find('./column[@name="Candidate.Address"]/Address1[@name="Candidate.ResidentialAddress"]'),
row.find('./column[@name="Candidate.Address"]/Address1[@name="Candidate.OfficeAddress"]'),
row.find('./column[@name="Candidate.GivenName"]'),
row.find('./column[@name="Candidate.Phone"]')]
#insert the data into a line
line = []
for item in items:
if item is None:
line.append("")
else:
try:
line.append(item.text.strip())
except:
line.append(item.strip())
data.append(line)
#finally, prepare your csv:
headers = ["id","Organization","Location","ResidentialAddress","OfficeAddress",".GivenName","Phone"]
with open('candidates.csv', 'w', encoding='UTF8', newline='') as f:
writer = csv.writer(f)
writer.writerow(headers)
writer.writerows(data)
output 应该是您正在寻找的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.