使用xml.etree.ElmentTree的TypeError

时间:2014-05-31 23:19:55

标签: python xml

我正在尝试针对某些数字测试xml文件中的属性。当我在属性上运行type()时(在本例中为currentNote):

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 :(得分:0)

currentNote = note.get("default-x")
如果密钥不匹配,

get默认返回None

您无法从integer。{/ p>创建NoneType

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以确认数据符合您的预期。