将 python xml 项目输出与列表进行比较
Compare python xml item output to list
我是 python 的新手。我目前正在做一个小项目,我在这个结构中有一个 XML 文档。
<commands>
<level1 name="sh">show></level1>
<level2 name="ip">ip</level2>
<level3 name="int">interface</level3>
<level4 name="br">show ip interface brief</level4>
<level1 name="int>interface</level1>
</commands>
我需要做的是从所有元素中提取属性值并将它们与列表进行比较。
for in i tree.iter():
attrib = i.items()
x = ['name', 'sh']
if attrib.index(0) in x
print "BLa"
我的问题是我收到一个错误 "ValueError: 0 is not in list"。我尝试了很多不同的方法来查看它是否像列表一样,但事实并非如此。奇怪的是,当我打印 'attrib' 时,我看到了一个列表。
直接来自 xml.etree.ElemenTree.items() 的文档 2.7.3(我的版本)-“items()
Returns 元素属性作为(名称,值)对的序列。属性以任意顺序返回。
请帮助我并询问任何其他信息。
编辑:为澄清起见,我想匹配一个列表,比如 x = ['sh',ip,'int','br'] 到每个元素值,直到每个列表索引都匹配,并且你来到最后一个元素文本,上面写着 "show ip interface brief"
好的,我看到 iter() 是递归的:
dicts = []
for node in root.iter():
if node.tag == 'level1':
dicts.append({}) # create new dict for tag chain
if dicts and 'name' in node.attrib.keys():
dicts[-1][node.attrib['name']] = node.text.rstrip().split() # list of words
听写输出:
{'sh': ['show'], 'br': ['show', 'ip', 'interface', 'brief'], 'ip': ['ip'], 'int': ['interface']}
{'int': ['interface']}
我是 python 的新手。我目前正在做一个小项目,我在这个结构中有一个 XML 文档。
<commands>
<level1 name="sh">show></level1>
<level2 name="ip">ip</level2>
<level3 name="int">interface</level3>
<level4 name="br">show ip interface brief</level4>
<level1 name="int>interface</level1>
</commands>
我需要做的是从所有元素中提取属性值并将它们与列表进行比较。
for in i tree.iter():
attrib = i.items()
x = ['name', 'sh']
if attrib.index(0) in x
print "BLa"
我的问题是我收到一个错误 "ValueError: 0 is not in list"。我尝试了很多不同的方法来查看它是否像列表一样,但事实并非如此。奇怪的是,当我打印 'attrib' 时,我看到了一个列表。
直接来自 xml.etree.ElemenTree.items() 的文档 2.7.3(我的版本)-“items() Returns 元素属性作为(名称,值)对的序列。属性以任意顺序返回。
请帮助我并询问任何其他信息。
编辑:为澄清起见,我想匹配一个列表,比如 x = ['sh',ip,'int','br'] 到每个元素值,直到每个列表索引都匹配,并且你来到最后一个元素文本,上面写着 "show ip interface brief"
好的,我看到 iter() 是递归的:
dicts = []
for node in root.iter():
if node.tag == 'level1':
dicts.append({}) # create new dict for tag chain
if dicts and 'name' in node.attrib.keys():
dicts[-1][node.attrib['name']] = node.text.rstrip().split() # list of words
听写输出:
{'sh': ['show'], 'br': ['show', 'ip', 'interface', 'brief'], 'ip': ['ip'], 'int': ['interface']}
{'int': ['interface']}