使用xml.etree.ElementTree时的TypeError

0 投票
1 回答
792 浏览
提问于 2025-04-18 08:09

我正在尝试测试一个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,以确认数据是否符合你的预期。

撰写回答