我从下面的链接收集了xml文件
http://ieeexplore.ieee.org/gateway/ipsSearch.jsp?py=2000&hc=100
我正在解析此xml文档中的Title
,Abstract
,Author
和Affiliation
,并创建单独的文本文件。有些文件有抽象元素,但很少有文件。我编写了一个python脚本,用于解析必填字段但如果上面提到的任何元素都不存在则不起作用。 PLZ建议任何可能的方法来跳过这样的文档:)
import xmltodict
for i in range (1000):
with open('C:/Python27/Major Project/2000 ipsSearch.jsp.xml') as fd:
fout = open(str(i)+".txt","w") ## Flush old records from output file
doc = xmltodict.parse(fd.read())
w = doc['root']['document'][i]['rank']
x = doc['root']['document'][i]['title']
y = doc['root']['document'][i]['abstract']
z = doc['root']['document'][i]['authors']
a = doc['root']['document'][i]['affiliations']
fout.write(str(w)+"\n"+str(x)+" "+str(y)+"\n"+str(z)+"\n"+str(a))
当任何abstract
中没有document
元素时出现错误。
答案 0 :(得分:1)
以安全的方式播放 - 检查元素是否首先出现,否则分配一个空字符串。
现在,由于解析后的XML显示为字典,因此您可以使用in
运算符来检查该字段,并使用三元if...else
运算符来默认您无法找到abstract
的情况:
...
y = doc['root']['document'][i]['abstract'] if 'abstract' in doc['root']['document'][i] else ''
z = doc['root']['document'][i]['authors'] if 'authors' in doc['root']['document'][i] else ''
...
所有元素都一样。