在python中通过迭代列表创建XML文件

2024-09-24 04:26:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我检查过这个link,但它没有解决我的问题。在

我有两个列表:

a = [['txt','stxt','pi','min','max'],['txt1','stxt1','pi1','min1','max1']]
b = [[0.45,1.23],[[0.75,1.53]]

 for l1 in a:
     for l2 in b:
         root = ET.Element("Class ",name = l1[0])
         doc = ET.SubElement(root, "subclass" , name = l1[1])
         ET.SubElement(doc, l1[4], min = str(l2 [0]),max = str(l2 [1]))
         tree = ET.ElementTree(root)
         tree.write(FilePath)

最后一条记录将覆盖以前的所有记录。那么如果我想把所有的记录都写到xml文件中呢?如何使用python编程实现这一点呢。我还希望每个记录都以新行的形式保存到xml文件中,但不能很好地打印出来。在

需要将输出添加到xml中:

^{pr2}$

但我得到的只有一条xml记录:

<Class  name="txt1"><subclass name="stxt1"><pi1 max1="0.1077" min1="-0.0785" /></subclass></Class >

Tags: namel1记录rootxmlminmaxclass
1条回答
网友
1楼 · 发布于 2024-09-24 04:26:50

你每次都在写同一个文件。你需要为每个输入创建一个新文件,两个for循环将生成4个不希望的组合的文件。相反,你需要的是拉链

a = [['txt','stxt','pi','min','max'],['txt1','stxt1','pi1','min1','max1']]
b = [[0.45,1.23],[0.75,1.53]]
from xml.etree import ElementTree as ET
root =  ET.Element("xml")
for l1 in zip(a,b):
        sroot_root = ET.Element("Class ",name = l1[0][0])
        doc = ET.SubElement(sroot_root, "subclass" , name = l1[0][1])
        ET.SubElement(doc, l1[0][4], min = str(l1[1][0]),max = str(l1[1][1]))
        root.append(sroot_root)


tree = ET.ElementTree(root)
tree.write("test.xml")

输出:

文件名:测试.xml

^{pr2}$

相关问题 更多 >