You need to enable JavaScript to run this app. Python批量提取XML文件数据时出现KeyError: 'Value'问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Python批量提取XML文件数据时出现KeyError: 'Value'问题求助

问题原因

你遇到的KeyError: 'Value'报错由两个潜在问题导致:

  • 部分XML文件中patientRole节点下不存在telecom子节点,find()方法返回None后强行取属性直接报错
  • 部分telecom节点未携带value属性,直接通过[]取不存在的键触发报错

你现有的批量遍历文件逻辑已经是对的,只要增加容错判断即可适配100份文件的批量提取需求。

修正后可运行代码

import os
import xml.etree.ElementTree as ET

# 预定义命名空间,避免重复写长串URN
NS = {'hl7': 'urn:hl7-org:v3'}
path = 'C:\\Users\\Downloads\\files'

for filename in os.listdir(path):
    if not filename.endswith('.xml'):
        continue
    fullname = os.path.join(path, filename)
    tree = ET.parse(fullname)
    # 遍历所有patientRole节点
    for leads in tree.findall('.//hl7:patientRole', namespaces=NS):
        # 先判断telecom节点是否存在
        telecom_node = leads.find('hl7:telecom', namespaces=NS)
        if telecom_node is not None:
            # 用get方法取属性,不存在则返回默认值,避免KeyError
            number = telecom_node.attrib.get('value', '未查询到联系电话')
            # 可按需加文件名输出,方便定位对应文件
            print(f"{filename}: {number}")

优化说明

  • 用命名空间字典简化节点查询写法,降低代码冗余
  • 增加节点存在性判断,避免空节点取值报错
  • 用dict.get()方法取属性,替代直接用[]取值,彻底解决属性不存在导致的KeyError问题
  • 输出关联文件名,方便你定位提取结果对应的源文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 07:36:03