
本教程详细介绍了如何使用python的`xml.etree.elementtree`模块,从xml文件中解析特定标签的属性,并将其高效地收集到一个python字典列表中。通过初始化空列表并在循环中追加每个元素的`attrib`字典,可以轻松实现结构化数据提取,方便后续数据处理和分析。
XML(可扩展标记语言)作为一种广泛使用的数据交换和存储格式,其结构化特性使其在多种应用场景中扮演着重要角色。在处理XML数据时,一个常见的任务是提取特定标签的属性信息。例如,我们可能需要从一系列 <SOURCEFIELD> 标签中,将每个字段的所有属性(如DATATYPE、FIELDNUMBER等)作为独立的字典,并最终将这些字典收集到一个Python列表中,以便于后续的数据处理、分析或存储。
Python标准库中的 xml.etree.ElementTree 模块提供了一个轻量级且高效的API,用于解析和操作XML文档。它将XML文档表示为一个树形结构,其中每个标签都被视为一个“元素”(Element),其属性则存储在元素的 attrib 字典中。
要将XML文件中特定标签的属性提取并存储为一个字典列表,主要步骤如下:
下面是根据上述步骤实现的完整示例代码:
立即学习“Python免费学习笔记(深入)”;
import xml.etree.ElementTree as ET
import os
# 定义XML文件路径
# 请将此路径替换为您的实际XML文件路径
xml_file_path = 'C:\Users\dd00849401\Desktop\xml\m_DM_DIM_NRC_CUSTOMER.xml'
# 检查文件是否存在
if not os.path.exists(xml_file_path):
print(f"错误:文件 '{xml_file_path}' 不存在。")
exit()
try:
# 解析XML文件
tree = ET.parse(xml_file_path)
root = tree.getroot()
print("XML文件解析成功。")
except ET.ParseError as e:
print(f"错误:XML文件解析失败。请检查文件格式是否正确。详细信息:{e}")
exit()
except Exception as e:
print(f"发生未知错误:{e}")
exit()
# 初始化一个空列表,用于存储所有SOURCEFIELD的属性字典
sourcefields_attributes = []
print("
*********** 源数据详情 ***********")
# 遍历所有的'SOURCE'标签
for source in root.iter('SOURCE'):
sourcename = source.attrib.get('NAME', 'N/A') # 使用.get()方法获取属性,避免KeyError
print(f"
源名称: {sourcename}")
print(f"*********** 源 '{sourcename}' 的详细信息: ***********")
print(source.attrib)
print(f"*********** 源 '{sourcename}' 的列名信息: ***********")
# 在每个'SOURCE'标签内部,遍历所有的'SOURCEFIELD'标签
for sourcefields in source.iter("SOURCEFIELD"):
# 打印当前SOURCEFIELD的属性字典
print(sourcefields.attrib)
# 将当前SOURCEFIELD的属性字典追加到列表中
sourcefields_attributes.append(sourcefields.attrib)
# 打印最终收集到的所有SOURCEFIELD属性的列表
print("
*********** 最终收集到的SOURCEFIELD属性列表 ***********")
print(sourcefields_attributes)
上述代码首先导入了必要的模块并指定了XML文件路径。它包含了基本的错误处理,以确保文件存在且XML格式正确。
执行上述代码后,您将获得如下格式的输出(具体内容取决于您的XML文件):
XML文件解析成功。
*********** 源数据详情 ***********
源名称: SOME_SOURCE_NAME
*********** 源 'SOME_SOURCE_NAME' 的详细信息: ***********
{'NAME': 'SOME_SOURCE_NAME', 'TYPE': 'Flat File'}
*********** 源 'SOME_SOURCE_NAME' 的列名信息: ***********
{'BUSINESSNAME': '', 'DATATYPE': 'varchar', 'DESCRIPTION': '', 'FIELDNUMBER': '1'}
{'BUSINESSNAME': '', 'DATATYPE': 'numeric', 'DESCRIPTION': '', 'FIELDNUMBER': '2'}
{'BUSINESSNAME': '', 'DATATYPE': 'timestamp', 'DESCRIPTION': '', 'FIELDNUMBER': '3'}
*********** 最终收集到的SOURCEFIELD属性列表 ***********
[{'BUSINESSNAME': '', 'DATATYPE': 'varchar', 'DESCRIPTION': '', 'FIELDNUMBER': '1'},
{'BUSINESSNAME': '', 'DATATYPE': 'numeric', 'DESCRIPTION': '', 'FIELDNUMBER': '2'},
{'BUSINESSNAME': '', 'DATATYPE': 'timestamp', 'DESCRIPTION': '', 'FIELDNUMBER': '3'}]通过 xml.etree.ElementTree 模块,我们可以高效地解析XML文档,并利用简单的列表追加操作,将特定标签的所有属性提取并组织成一个字典列表。这种方法不仅代码简洁,而且能够将XML的结构化数据转换为Python中易于操作的数据结构,为后续的数据处理和分析奠定了基础。
以上就是Python ElementTree:将XML标签属性提取为字典列表的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号