-1

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

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()

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

4

1 回答 1

1

你确定rightsdoi或者date实际上包含任何东西?如果getElementsByTagName没有找到任何东西,这些列表将为空。

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

长话短说,在访问之前检查您的列表是否实际包含数据,或者使用try-catch

于 2013-10-28T23:02:37.413 回答