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

Python解析XML提取DECEASED标签属性并导出为CSV的问题求助

问题原因与解决方案

你的代码出现空数据集主要有三个核心问题:

  • 节点路径错误:DECEASED标签嵌套在BSB -> APPLSUMMARY层级下,直接访问root.BSB.DECEASED无法定位到目标节点
  • 取值逻辑错误:DECEASED为自闭合标签,所有属性值存储在节点的attrib字段中,并非子节点,遍历getchildren()无法获取到数据
  • 依赖导入不全:代码使用的lxml.objectify、pandas都没有提前导入

可直接运行的实现代码

方案1:兼容你原有的lxml.objectify写法

首先安装依赖:
pip install lxml pandas

代码如下:

from lxml import objectify
import pandas as pd

# 替换为你的XML文件实际路径
xml_path = "test.xml"
parsed = objectify.parse(open(xml_path, encoding="utf-8"))
root = parsed.getroot()

data = []
# 直接定位DECEASED节点,读取属性字典
deceased_node = root.APPLSUMMARY.DECEASED
data.append(deceased_node.attrib)

# 导出CSV,utf-8-sig编码避免Excel打开乱码
df = pd.DataFrame(data).drop_duplicates()
print(df)
df.to_csv("DECEASED.csv", index=False, encoding="utf-8-sig")

方案2:使用Python标准库实现(无需额外安装lxml)

仅依赖Python自带的xml模块,无需安装lxml:

import xml.etree.ElementTree as ET
import pandas as pd

xml_path = "test.xml"
tree = ET.parse(xml_path)
# 支持匹配任意层级的DECEASED标签,即使后续XML结构调整也能生效
deceased_nodes = tree.findall(".//DECEASED")
data = [node.attrib for node in deceased_nodes]

df = pd.DataFrame(data).drop_duplicates()
df.to_csv("DECEASED.csv", index=False, encoding="utf-8-sig")
print(df)

导出的CSV会自动将LQB、FCC、GCC、HCC、ICC作为列名,对应属性值作为行内容,符合你预期的对齐效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:06:02