我的 etree 元素具有一些属性 - 我们如何删除特定 etree 元素的属性。
问问题
36045 次
3 回答
46
.attrib
元素对象的成员包含属性字典 - 您可以使用.pop("key")
或del
像在任何其他字典上一样删除键值对。
于 2010-04-27T10:34:45.950 回答
10
例子 :
>>> from lxml import etree
>>> from lxml.builder import E
>>> otree = E.div()
>>> otree.set("id","123")
>>> otree.set("data","321")
>>> etree.tostring(otree)
'<div id="123" data="321"/>'
>>> del otree.attrib["data"]
>>> etree.tostring(otree)
'<div id="123"/>'
请注意,有时您没有以下属性:
总是建议我们处理异常。
try:
del myElement.attrib["myAttr"]
except KeyError:
pass
于 2011-06-07T20:22:27.177 回答
10
try/except
当您弹出一个不可用的键时,您不需要这样做。这是您如何做到这一点的方法。
代码
import xml.etree.ElementTree as ET
tree = ET.parse(file_path)
root = tree.getroot()
print(root.attrib) # {'xyz': '123'}
root.attrib.pop("xyz", None) # None is to not raise an exception if xyz does not exist
print(root.attrib) # {}
ET.tostring(root)
'<urlset> <url> <changefreq>daily</changefreq> <loc>http://www.example.com</loc></url></urlset>'
于 2017-01-12T10:58:09.350 回答