使用xml.etree.ElementTree时的TypeError
我正在尝试测试一个xml文件中的属性,看看它们和一些数字的对比。当我对这些属性(这里是currentNote
)使用type()
这个函数时:
import xml.etree.ElementTree as ET
tree = ET.parse('booze.xml')
root = tree.getroot()
for note in root.iter("note"):
currentNote = note.get("default-x")
print type(currentNote)
结果显示类型是<type = 'str'>
,意思是这个属性是字符串类型。
但是,如果我把最后一行改成这样:
print type(int(currentNote))
我得到的结果是:
TypeError: int() argument must be a string or a number, not 'NoneType'
我不太明白发生了什么——感觉我对etree解析器返回的结果理解错了...
1 个回答
0
currentNote = note.get("default-x")
get
方法默认情况下如果找不到对应的键,就会返回 None
。
你不能把 NoneType
转换成一个 integer
(整数)。
In [51]: int(None)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-51-3f3b1d3c7325> in <module>()
----> 1 int(None)
TypeError: int() argument must be a string or a number, not 'NoneType'
你应该在循环中打印 note
,以确认数据是否符合你的预期。