11

我是新手程序员,试图制作一个解析 xml 并将其内容粘贴到频道的 irc 机器人。通常我在谷歌上找到我的答案,但这次我找不到我的答案。

q0tag = dom.getElementsByTagName('hit')[0].toxml()
q0 = q0tag.replace('<hit>','').replace('</hit>','')

q1 = (q0 * 1.2)

当我试图乘以 q0 它总是显示

TypeError: can't multiply sequence by non-int of type 'float'.

我试图使 q0 int 或 float 但它只会犯另一个错误

AttributeError: 'NoneType' object has no attribute 'replace'

q0 值是一个没有小数的整数。

4

2 回答 2

26

您的 q0 值仍然是一个字符串。这基本上就是你正在做的事情:

>>> q0 = '3'
>>> q1 = (q0 * 1.2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'float'

要修复它,请先将字符串转换为数字:

>>> q1 = (float(q0) * 1.2)
>>> q1
3.5999999999999996

您可能还想查看用于解析 XML的lxmlBeautifulSoup模块。

于 2012-09-24T18:45:02.063 回答
1

Toxml()产生字符串(参见例如http://docs.python.org/library/xml.dom.minidom.html)。Replace也产生一个字符串,所以q0是一个字符串。

于 2012-09-24T18:49:33.120 回答