2

私の質問は、というxml変数の変数をチェックしxmlauthorたいのですが、基本的に何かが書かれているかどうかをチェックしたいのです。どうすればいいですか?これは私がこれまでに書いたものです:

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
4

2 に答える 2

8

xml.domを使用していると仮定すると、getElementsByTagNameは文字列のリストを返さず、Elementxmlauthorオブジェクトのリストを返すため、行内の文字列に連結することはできません。

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

次のように変更することで、文字列に変換できます。

    content += "***Changes by:"  + xmlauthor.childNodes[0].nodeValue + "*** \n \n"
于 2012-08-27T20:01:44.587 に答える
3

次回のヒント:

  • のようなTypeError: cannot concatenate 'str' and 'instance'エラーが発生した場合は、エラーが発生した場所を確認することから始めることができます。文字列のどこに何かを追加しますか?
  • 問題がどこにあるかを特定したら(トレースバックで行番号がわかります)、文字列に追加しようとしているオブジェクトのタイプを確認することをお勧めします(この例では、それはでしたxmlauthorprint type(xmlauthor)たくさんの情報。
  • 特に、それはあなたにオブジェクトが何であるかについてのいくらかの考えを与えるかもしれません。xml.domあなたの例では、それがモジュールで定義されたオブジェクトであると想定できます。ドキュメントはそれについて何と言っていますか?docs.python.orgにアクセスして確認するか、を試すことができますhelp(your_object)
  • それはあなたが期待していたオブジェクトですか?おそらくそうではありません。問題を解決するこのオブジェクトのメソッドや属性など、もっと興味深いものはありますか?もう一度、ドキュメントにアクセスして確認するか、ドキュメントdir(your_object)が提供できるものを見つけてください。
  • 多分それはあなたが結局必要としたものではなかったか、あなたはドキュメントを理解することができません。その場合は、SOについて質問することをお勧めします。しかし、その時だけ。

もちろん、直接的な答えを持つことは素晴らしいことですが、何が悪かったのかを理解する方が良いので、あなたは同意するでしょう。

于 2012-08-27T21:24:30.813 に答える