Python 分析XML响应:列表索引超出范围错误

Python 分析XML响应:列表索引超出范围错误,python,xml,Python,Xml,我从一个论坛得到这个脚本,它不断出现以下错误 Traceback (most recent call last): File "test.py", line 42, in <module> main() File "test.py", line 28, in main bot_response = objektid[0].toxml() IndexError: list index out of range 非常感谢您在这方面的帮助未找到任何元素: objektid

我从一个论坛得到这个脚本,它不断出现以下错误

Traceback (most recent call last):
  File "test.py", line 42, in <module> main()
  File "test.py", line 28, in main
    bot_response = objektid[0].toxml()
IndexError: list index out of range
非常感谢您在这方面的帮助

未找到任何元素

objektid = dom.getElementsByTagName('that')
所以列表是空的

在测试代码时,我得到了以下信息:

<result status="3" botid="ebbf27804e3458c5"><input>Hello world!</input><message>Failed to find bot</message></result>
你好,世界!找不到bot
它不包含这样的标签。错误消息似乎表明您正在使用的特定机器人id不存在或不再存在。也许你需要在网上注册一个你自己的新机器人

我注意到你正在做一些令人讨厌的逃避。为什么不抓取该标记下的文本节点,让DOM库为您处理这些呢

您可能希望查看(随Python一起提供),因为它更易于使用。

未找到任何元素

objektid = dom.getElementsByTagName('that')
所以列表是空的

在测试代码时,我得到了以下信息:

<result status="3" botid="ebbf27804e3458c5"><input>Hello world!</input><message>Failed to find bot</message></result>
你好,世界!找不到bot
它不包含这样的标签。错误消息似乎表明您正在使用的特定机器人id不存在或不再存在。也许你需要在网上注册一个你自己的新机器人

我注意到你正在做一些令人讨厌的逃避。为什么不抓取该标记下的文本节点,让DOM库为您处理这些呢

您可能希望研究(随Python一起提供的),因为它更易于使用。

问题就在这里

   objektid = dom.getElementsByTagName('that')
   bot_response = objektid[0].toxml()
如果dom.getElementsByTagName完全不返回任何内容,则objektid[0],objektid的第一个元素将不存在。这就是错误

要想绕过它,做点什么

  objektid = dom.getElementsByTagName('that')
  if len(objektid) >= 0:
      bot_response = objektid[0].toxml()
      bot_response = bot_response[6:]
      bot_response = bot_response[:-7]
      # Some nasty unescaping
      bot_response = unescape(bot_response, {"&amp;apos;": "'", "&amp;quot;": '"'})
  else:
      bot_response = ""

  print 'Getter:',str(bot_response)
问题就在这里

   objektid = dom.getElementsByTagName('that')
   bot_response = objektid[0].toxml()
如果dom.getElementsByTagName完全不返回任何内容,则objektid[0],objektid的第一个元素将不存在。这就是错误

要想绕过它,做点什么

  objektid = dom.getElementsByTagName('that')
  if len(objektid) >= 0:
      bot_response = objektid[0].toxml()
      bot_response = bot_response[6:]
      bot_response = bot_response[:-7]
      # Some nasty unescaping
      bot_response = unescape(bot_response, {"&amp;apos;": "'", "&amp;quot;": '"'})
  else:
      bot_response = ""

  print 'Getter:',str(bot_response)

尝试
print
ing
objektid
-看起来你得到的是一个空列表,所以索引0中没有任何内容。尝试
print
ing
objektid
-看起来你得到的是一个空列表,所以索引0中没有任何内容。当我看到@Martijn的问题编辑时,我只是关闭页面,没有机会:)非常感谢您的帮助回答,事实上我使用了错误的机器人id。再次感谢您的帮助。当我看到@Martijn的问题编辑-我刚刚关闭页面,没有机会:)非常感谢您的帮助回答,事实上我使用了错误的机器人id。再次感谢您的帮助。