gpt4 book ai didi

python - 循环遍历 xml 文件列表?

转载 作者:行者123 更新时间:2023-12-01 02:01:47 24 4
gpt4 key购买 nike

我正在尝试创建一个程序,循环遍历 xml 文件列表并从文件中提取某些元素:

from os import listdir, path
import xml.etree.ElementTree as ET

mypath = 'C:\myfolder'

files = [f for f in listdir(mypath) if f.endswith('.xml')]

for file in files:
tree = ET.parse(file)
root = tree.getroot()

ns = {namespaces}

def myfunction():
if 'something' in root.tag:
filename = path.splitext(file)[0]
var1 = root.find('./element1', ns)
var2 = root.find('./element2', ns)

row = [
var1.text,
var2.text
]

return row

如果我调用该函数,上面的代码将返回一个包含 var1、var2(来自最后一个文件)的列表。我定义此函数的原因是,不同类型的 xml 文件具有不同的元素名称,因此我将为每种文件类型创建一个函数。

现在我想创建一个表,其中每个文件的输出都是一行,即:

filename1, var1, var2
filename2, var1, var2
ect.

最好将表导出到 csv 文件。我该怎么做?

最佳答案

编写 CSV 文件的最简单方法是使用 Standard CSV 。要编写 CSV 文件,就像打开文件并使用默认编写器一样简单:

import csv
from os import listdir, path
import xml.etree.ElementTree as ET

mypath = 'C:\myfolder'

files = [f for f in listdir(mypath) if f.endswith('.xml')]

for file in files:
tree = ET.parse(file)
root = tree.getroot()

ns = {namespaces}

def myfunction():
if 'something' in root.tag:
filename = path.splitext(file)[0]
var1 = root.find('./element1', ns)
var2 = root.find('./element2', ns)

row = [
var1.text,
var2.text
]

# Open the file and store the data
with open('outfile.csv', 'a', newline='') as csvfile:
csv_writer = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
csv_writer.writerow(row)

return row

请注意<a href="https://docs.python.org/3.6/library/csv.html#csv.writer" rel="noreferrer noopener nofollow">csf.writer</a>接收一个列表作为参数。

关于python - 循环遍历 xml 文件列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49543392/

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