You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python将列表写入XML文件时数据重复问题求助

问题:XML文件写入时数据重复的原因及解决办法

你遇到的重复数据问题,根源其实就在代码里的这一行:usrconfig.extend(usrconfig)。咱们来掰扯清楚为什么这会出问题:

当你调用extend()方法时,它会把传入的可迭代对象里的所有元素,添加到当前元素的子节点列表中。这里你传入的是usrconfig本身,相当于把usrconfig已经生成的所有<usr>元素,再完整复制一遍塞进去,结果自然就出现了重复的数据。

另外,你的代码里还有个小冗余:

usrconfig = Element("usrconfig")
usrconfig = ET.SubElement(usrconfig,"usrconfig")

这行代码先创建了一个<usrconfig>根节点,接着又在它下面再创建了一个同名的子节点,虽然这不是重复数据的直接原因,但会导致XML结构多了一层不必要的嵌套,建议一起修正。

修正后的代码

import xml.etree.ElementTree as ET

users_list = ['Group1User1', 'Group1User2', 'Group2User1', 'Group2User2']

def create_xml():
    # 直接创建正确的根节点
    root = ET.Element("usrconfig")
    # 直接遍历列表元素,比通过索引更简洁直观
    for user in users_list:
        usr = ET.SubElement(root, "usr")
        usr.text = user
    # 移除错误的extend调用
    tree = ET.ElementTree(root)
    tree.write("details.xml", encoding='utf-8', xml_declaration=True)

# 调用生成函数
create_xml()

修正后生成的XML内容

<?xml version='1.0' encoding='utf-8'?>
<usrconfig>
    <usr>Group1User1</usr>
    <usr>Group1User2</usr>
    <usr>Group2User1</usr>
    <usr>Group2User2</usr>
</usrconfig>

这样修改后,既解决了数据重复的核心问题,又优化了代码结构和XML的层级合理性,输出的内容就完全符合预期了。

内容的提问来源于stack exchange,提问作者vnkathare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:15:22