2014-10-07 71 views
0

我使用python3.4并通过etree解析一个xml文件。 某些节点有属性“含义”,其中一些节点具有属性“角色”,有些节点具有属性“含义”。这些节点可能具有其他属性,但对我而言并不重要。 如果它们存在,我需要提取这些属性(含义和角色)。 如果是有我用:检查一个元素是否有属性python3

role = XMTok.attrib["role"] 

但如果节点剂量没有属性“角色”,那么它给我这个错误:

KeyError: 'role' 

是有办法,如果节点首先检查有属性“角色”或不,如果是,那么提取它,如果没有,那么继续?

回答

3

attrib是一个标准的字典,所以你可以使用in成员运算测试:

if 'role' in XMTok.attrib: 

,或者您可以使用dict.get(),并有一个默认返回如果密钥丢失(None默认情况下,或者你可指定其他内容):

role = XMTok.attrib.get('role', 'No role set') 
+0

非常感谢你^ _ ^ – MathGirl 2014-10-07 12:44:41

0

使用__dict__检查属性。 所以XMTok.attrib._dict__会有所帮助。