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

Python XML解析:如何将多个字典的Key5值提取到单个列表

解决XML属性提取重复值的问题

问题原因分析

  1. 列表初始化位置错误:原代码中l = []放在for x in root[2:]循环内部,每次处理一个元素都会重置列表,无法累积多个元素的结果。
  2. 多余的内层循环:for d in attributes会遍历当前元素的所有属性键,每次循环都添加同一个Key5的值,导致单个元素的Key5被重复添加(次数等于属性的数量)。
  3. 无全局结果存储:原代码没有保留跨文件的收集结果,最终无法得到所有文件的Key5值集合。

修正后的代码

import xml.etree.ElementTree as ET
import os

path = "directory/here"
# 全局列表存储所有Key5的值
key5_values = []

for filenames in os.listdir(path):
    if filenames.endswith('.xml'):
        fullnames = os.path.join(path, filenames)
        tree = ET.parse(fullnames)
        root = tree.getroot()
        for x in root[2:]:
            attributes = x.attrib
            # 直接提取当前元素的Key5值,非空则加入列表
            key5_val = attributes.get("Key5")
            if key5_val:
                key5_values.append(key5_val)

# 输出最终结果
print(key5_values)

修正说明

  • 将列表key5_values初始化移到所有循环外部,确保可以累积所有文件、所有目标元素的Key5值。
  • 移除遍历属性的内层循环,直接通过attributes.get("Key5")提取目标属性值,避免重复添加同一值。
  • 增加非空判断,防止无Key5属性的元素向列表中添加None值(可根据实际需求移除该判断)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:20:33