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
相关产品推荐
相关产品推荐

