【问题标题】:Python : TypeError: can't multiply sequence by non-int of type 'float'Python:TypeError:不能将序列乘以“float”类型的非整数
【发布时间】:2012-09-16 06:16:27
【问题描述】:

我是新手程序员,试图制作一个解析 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 值是一个没有小数的整数。

【问题讨论】:

    标签: python


    【解决方案1】:

    您的 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 模块。

    【讨论】:

    • +1 用于提及 XML 解析器。 ElementTreeminidom 也不错。
    • 我一开始是这样做的,但删除了它。我意识到 OP 正在使用 xml.dom 这可能没问题
    • 是的,我评论后也看到了。无论如何,我会保留这些链接,因为有人可能会发现它们很有用。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-04
      • 2010-12-30
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      相关资源
      最近更新 更多