Python3解析XML时如何将元素文本与属性输出在同一行并解决报错
问题修复方案
你代码的报错和属性提取问题来自两处语法错误:
attrib是存储节点所有属性的字典对象,只能用字典的[]语法取值,不能用()调用,这是触发TypeError的直接原因- 节点属性的值本身就是字符串,不需要额外调用
.text属性,.text只用于提取子标签包裹的文本内容
可直接运行的修正代码
import xml.etree.ElementTree as et tree = et.parse("cd_catalog.xml") root = tree.getroot() for child in root.findall("CD"): artist = child.find("ARTIST").text title = child.find("TITLE").text # 直接按字典取值规则取decade属性 decade = child.attrib["decade"] print("Artist: %s, Title: %s, Decade: %s" %(artist, title, decade))
运行输出示例
对应你给出的XML样例,运行后会直接输出符合要求的单行内容:
Artist: Bob Dylan, Title: Empire Burlesque, Decade: 80s
可选优化
如果部分CD节点可能没有decade属性,可以改用字典的get方法避免抛出KeyError:
decade = child.attrib.get("decade", "未知")
内容的提问来源于stack exchange,提问作者Ejones222
相关产品推荐
相关产品推荐

