我想将 XML 文件转换为 CSV。但是,我不断收到错误 AttributeError: 'NoneType' object has no attribute 'integer'。
xmlparse = Xet.parse('Apple Music Library.xml')
root = xmlparse.getroot()
for i in root:
Track_ID = i.find("Tack ID").integer
Name = i.find("Name").text
Artist = i.find("Artist").text
我尝试将数据类型更改为文本,但没有任何变化。
代码中存在一些问题,导致出现“AttributeError: 'NoneType' object has no attribute 'integer'”错误。让我们逐步分解一下:
- 拼写错误: 代码中将“Track ID”拼写为“Tack ID”。
-
integer
属性不存在:xml.etree.ElementTree
中的元素对象没有integer
属性。要获取整数值,应该使用.text
获取字符串值,然后使用int()
将其转换为整数。 -
处理缺失标签:
如果 XML 文件中缺少“Track ID”、“Name”或“Artist”标签,
find()
方法将返回None
。尝试访问None
的.text
属性将引发错误。
以下是更正后的代码:
import xml.etree.ElementTree as Xet
xmlparse = Xet.parse('Apple Music Library.xml')
root = xmlparse.getroot()
for i in root:
track_id_element = i.find("Track ID")
name_element = i.find("Name")
artist_element = i.find("Artist")
# 检查标签是否存在,然后再访问 .text 属性
Track_ID = int(track_id_element.text) if track_id_element is not None else ''
Name = name_element.text if name_element is not None else ''
Artist = artist_element.text if artist_element is not None else ''
print(f"Track ID: {Track_ID}, Name: {Name}, Artist: {Artist}")
这段更正后的代码首先检查标签是否存在。如果标签存在,它将获取
.text
属性并将其存储在相应的变量中。如果标签不存在,它将存储一个空字符串 (
''
) 以避免错误。
这应该可以解决的问题并允许成功解析 XML 文件。请记住,在处理 XML 数据时,始终重要的是要考虑缺失标签的可能性并进行相应处理。
标签:python,xml,xml-parsing From: 79016679