как убрать атрибут элемента Этри? - PullRequest
34 голосов
/ 27 апреля 2010

У меня есть элемент etree, имеющий некоторые атрибуты - как мы можем удалить атрибут элемента perticular etree.

Ответы [ 3 ]

32 голосов
/ 27 апреля 2010

Элемент .attrib объекта-элемента содержит диктовку атрибутов - вы можете использовать .pop("key") или del , как и в любом другом диктовке , чтобы удалить пара ключ-вал.

8 голосов
/ 08 июня 2011

Пример:

>>> 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
4 голосов
/ 12 января 2017

Вам не нужно 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>'
...