我正在尝试编写一个解析单个目录中所有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()
我在这里做错了什么? 在此先感谢您的帮助!
答案 0 :(得分:1)
您确定rights
,doi
或date
确实包含任何内容吗?如果getElementsByTagName
找不到任何内容,则这些列表将为空。
doi
也可能只包含一个元素,而您尝试访问第二个doi[1]
。
简而言之,请先检查您的列表是否包含数据,然后再使用try-catch