45

いくつかの属性を持つ etree の要素があります。特定の etree 要素の属性を削除するにはどうすればよいですか。

4

3 に答える 3

46

.attrib要素オブジェクトのメンバーには、属性の dict が含まれています。キーと値のペアを削除するには、他の dict で.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 に答える