我需要将一个xml文件目录解析成一个大的csv文件,我需要元素'Param'下的某些属性(属性是'Name'和'PNum')。目录中有另一个名为Content.xml的XML文件,我可以获取其他XML文件的所有名称,并将它们设置为FileName。问题是我无法弄清楚如何在每个XML文件中获取这些属性,因为每个XML文件都有不同的组织,而有些组织似乎并没有这些属性。
我编写的代码适用于目录中的一个XML文件,该文件输出包含所有相关信息的CSV文件。
import xml.etree.ElementTree as ET import csv import os
FileName = '------.xml' tree = ET.parse(FileName) root = tree.getroot()[4]
csv_out = open('CsvOut', 'w')
csvwriter = csv.writer(csv_out)
count = 0 for child in root: generation = [] parameters = [] if count == 0: csv_head = ['Generation', 'Parameter Name', 'Parameter Number'] csvwriter.writerow(csv_head) count = count + 1 gen = FileName[:-4] generation.append(gen) parameters.append(generation) name = child.get('Name') parameters.append(name) num = child.get('PNum') parameters.append(num) csvwriter.writerow(parameters)
csv_out.close()
很简单,你可以分两步完成:
首先,枚举目录中的所有xml文件 在这些文件上执行代码 import xml.etree.ElementTree as ET import csv import os from glob import glob
csv_out = open('CsvOut', 'w') csvwriter = csv.writer(csv_out)
csv_head = ['Generation', 'Parameter Name', 'Parameter Number'] csvwriter.writerow(csv_head)
for FileName in glob("*.xml"): tree = ET.parse(FileName) root = tree.getroot()[4] for child in root: generation = [] parameters = []
gen = FileName[:-4]
generation.append(gen)
parameters.append(generation)
name = child.get('Name')
parameters.append(name)
num = child.get('PNum')
parameters.append(num)
csvwriter.writerow(parameters)
csv_out.close()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。