Python if语句,不能连接'str'和'instance'对象

时间:2012-08-27 19:56:39

标签: python if-statement xml-parsing

我的问题是我想检查名为xmlauthor的xml变量中的变量,我想检查是否基本上写了一些内容。我该怎么办? 这是我到目前为止所写的:

for num in ic : 
    xmlauthor = dom.getElementsByTagName("author")[0]

    if not xmlauthor: 
        content += "***Changes by:"  + xmlauthor + "*** \n \n"
    else:
        content += "***Changes are made Anonumously** \n \n" 

这是我在控制台上遇到的错误

content += "***Changes by:"  + xmlauthor + "*** \n\n" 
TypeError: cannot concatenate 'str' and 'instance' objects

2 个答案:

答案 0 :(得分:8)

假设您正在使用xml.domgetElementsByTagName不返回字符串列表,它会返回Element个对象的列表,因此您无法连接{{1}行到

中的字符串
xmlauthor

您可以将其更改为字符串,将其转换为字符串:

    content += "***Changes by:"  + xmlauthor + "*** \n \n"

答案 1 :(得分:3)

下次的一些提示:

  • 当您遇到TypeError: cannot concatenate 'str' and 'instance'之类的错误时,您可以先查看错误发生的位置。你在哪里添加一些字符串?
  • 一旦确定了问题所在(跟踪会为您提供行号),您可能需要检查要添加到字符串中的对象的类型(在您的示例中,它是{{ 1}}。xmlauthor应该为您提供大量信息。
  • 特别是,它可以让您了解对象是什么。在您的示例中,我们可以假设它是print type(xmlauthor)模块中定义的某个对象。文档对此有何评论?您可以查看docs.python.org,也可以尝试xml.dom
  • 这是你期待的对象吗?可能不是。有没有更有趣的东西,比如,这个对象的方法或属性可以解决你的问题?再一次,去查看文档,或者只是尝试help(your_object)找到它可以提供的内容。
  • 也许这不是你所需要的,或者你无法理解文档。那么问一下这是个好主意。但只有这样。

当然,直接回答是很好的,但是理解出了什么问题会更好,你会同意的。