如何在不使用IndexError
的情况下强制python忽略try
& except
我提取的每一个值?
我的XML有多个需要提取的值。有些记录在root [0]上没有值,所以我必须手动使用try
&对于我正在提取的每个节点,except IndexError:
。
这是我的代码:
try:
a = etree.XPath('/Data/a/b/nodeA/text()')(root)[0]
except IndexError:
a = ''
try:
b = etree.XPath('/Data/a/b/x/y/nodeB/text()')(root)[0]
except IndexError:
b = ''
try:
c = etree.XPath('/Data/a/b/d/nodeB/text()')(root)[0]
except IndexError:
c = ''
答案 0 :(得分:1)
在尝试检索第一个匹配项之前测试返回值:
a = etree.XPath('/Data/a/b/nodeA/text()')(root)
if a:
# do something with a[0]
或者,将a
设置为空字符串或单行上的第一个值:
a = etree.XPath('/Data/a/b/nodeA/text()')(root)
a = a[0] if a else ''
答案 1 :(得分:1)
当我使用xpath查询时,我尝试使用循环而不是索引。这样,如果查询没有找到任何内容,嵌套在循环中的代码永远不会运行而你不会 t必须索引,因为循环值在每次迭代中都绑定到本地名称。允许一个例子。
for a, b, c in zip(
etree.XPath('/Data/a/b/nodeA/text()')
etree.XPath('/Data/a/b/x/y/nodeB/text()')
etree.XPath('/Data/a/b/d/nodeB/text()')):
print a, b, c