随机(好吧,显然)“IndexError:列表索引超出范围”

时间:2013-10-28 22:58:19

标签: python xml

我正在尝试编写一个解析单个目录中所有xml文件的程序。代码似乎工作正常,但有时一个文件被解析没有任何麻烦(当它是单独或当它是第一个被解析时),有时解析相同的文件返回“”IndexError:列表索引超出范围“< / p>

from xml.dom.minidom import parse, parseString
import os

liste=open('oup_list_hybrid.txt','a')
for r,d,f in os.walk('C:/Users/bober/Documents/Analyse_citation_crossref/'):
    for files in f:
        if files.endswith(".xml"):
            print files
            dom=parse(files)
            for element in dom.getElementsByTagName('record'):
                rights = element.getElementsByTagName('dc:rights')
                doi = element.getElementsByTagName('dc:identifier')
                date= element.getElementsByTagName('dc:date')
                try:
                    valeurrights=rights[0].firstChild.nodeValue
                    valeurdoi=doi[1].firstChild.nodeValue
                    valeurdate=date[0].firstChild.nodeValue
                    resultat=valeurrights+';'+valeurdoi+';'+valeurdate+'\n'
                    liste.write(resultat)
                except IndexError:
                    print 'pb avec'+files
                    continue


    break
liste.close()

我在这里做错了什么? 在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您确定rightsdoidate确实包含任何内容吗?如果getElementsByTagName找不到任何内容,则这些列表将为空。

doi也可能只包含一个元素,而您尝试访问第二个doi[1]

简而言之,请先检查您的列表是否包含数据,然后再使用try-catch