Python用ElementTree解析XML打印元素输出内存地址如何解决
代码问题排查与修复方案
现有代码存在的问题
- 多处基础语法错误
- 第一个循环
range root.iter(...)语法错误,range调用必须加括号;且迭代获取到的UNHEATED_ROWS节点赋值给了变量i,后续调用text属性应该用i.text,你代码中使用的UNHEATED_ROWS是未定义变量 - 第二个循环
range uheatedzones不仅缺少括号,还直接传入了字符串类型的节点值,需要先转为int类型才能传入range,且行尾多余冒号属于语法错误 - 第三个循环的内层for循环逻辑错误,不能直接把列表元素
uzones[k]作为循环接收变量,会直接覆盖列表原有内容
- 第一个循环
- 输出不符合预期的核心原因:你直接打印ElementTree的Element对象,默认输出的就是包含节点名和内存地址的格式化字符串,Element对象的*
tag属性*才存储你需要的节点名称。
修复后的可运行代码
import xml.etree.ElementTree as ET # 此处假设你已经完成XML解析得到root对象 # 第一步:读取UNHEATED_ROWS的数值 unheated_count = 0 for row_node in root.iter('UNHEATED_ROWS'): unheated_count = int(row_node.text) # 第二步:遍历对应节点打印节点名称 for index in range(1, unheated_count + 1): target_tag = f"UNHEATED{index}" for node in root.iter(target_tag): print(node.tag)
内容的提问来源于stack exchange,提问作者Dimstef89
相关产品推荐
相关产品推荐

