gpt4 book ai didi

python - 如何解析多个xml文件并将属性传递给csv?

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:33 25 4
gpt4 key购买 nike

我需要将一个 xml 文件目录解析为一个大的 csv 文件,我需要元素“Param”下的某些属性(属性是“Name”和“PNum”)。在名为 Content.xml 的目录中还有另一个 XML 文件,我可以获取其他 XML 文件的所有名称并将它们设置为 FileName。问题是我不知道如何在每个 XML 文件中获取这些属性,因为每个 XML 文件都有不同的组织,有些文件似乎一开始就没有这些属性。

我已经编写了适用于输出包含所有相关信息的 CSV 文件的目录中的 XML 文件之一的代码。

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

# create csv writer
csv_out = open('CsvOut', 'w')
csvwriter = csv.writer(csv_out)
# write the header
csv_head = ['Generation', 'Parameter Name', 'Parameter Number']
csvwriter.writerow(csv_head)

# iterate over the xml files in the current directory
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)

# after iterating, close the csv file
csv_out.close()

关于python - 如何解析多个xml文件并将属性传递给csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57591754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com