Python 读取 XML 文件时不断出现错误 "list index out of range"

标签 python xml list dom

我有一个具有以下结构的 XML 文件:

<Thread THREAD_SEQUENCE="Q268_R16">
<RelQuestion RELQ_ID="Q268_R16">
<RelQSubject>Best Bank.</RelQSubject>
<RelQBody>Hi ti all QL's; What bank you are using? and why? Are you using this bank just because it has an affiliate at home? Regards;</RelQBody>
</RelQuestion>
</Thread>

在XML文件中,有244个RelQBody标签。 我想要做的是获取 RelQBody 标记内的文本。我尝试过这样的事情:

import xml.dom.minidom
dom = xml.dom.minidom.parse("test.xml")
data = dom.documentElement

question = data.getElementsByTagName("RelQBody")
i=1
for q in question:
    print("%i. %s" % (i, q.childNodes[0].data))
    i = i+1

但我一直收到错误消息

Traceback (most recent call last):
File "C:\Users\Administrator\Documents\python\test.py", line 13, in <module>
  print("%i. %s" % (i, q.childNodes[0].data))
IndexError: list index out of range

但是,当我尝试这段代码时:

import xml.dom.minidom
dom = xml.dom.minidom.parse("test.xml")
data = dom.documentElement

question = data.getElementsByTagName("RelQBody")
i=1
for q in question:
    print("%i" % i)
    i = i+1

我得到了号码 1-244。它与数据集中的完全相同。

那么为什么我打印带字符串和不带字符串时会有差异呢?也许有人可以告诉我我做错了哪一部分? 我是 Python 新手,所以任何帮助将不胜感激。谢谢。

最佳答案

import xml.dom.minidom
dom = xml.dom.minidom.parse("test.xml")
data = dom.documentElement

question = data.getElementsByTagName("RelQBody")
for i,q in enumerate(question):
    if len(q.childNodes) > 0:
        print("%i. %s" % (i+1, q.childNodes[0].data))

关于Python 读取 XML 文件时不断出现错误 "list index out of range",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45049170/

相关文章:

java - 存储和接收 xml rss feed 文件

css - 在基于 CSS 的绝对定位 UL 对齐(下拉效果)方面需要帮助

python - 根本无法启动 Jupyter Notebook

c# - C# 和 Python 之间的通信

Python:列表的最长公共(public)子序列的长度

c# - 具有内联架构的 XDocument。 SchemaInfo 为空

java - 使用 Saxon-HE 检索 XSLT 2.0 中的 HashMap 值

python - 创建列表后关闭文件 > text = open ("path/file.ext").read().split()

list - 在 prolog 脚本中定义列表

Emoji 的 Python unicode 字符转换