首先,我遵循了this question,但是remove方法仍然存在问题。
tag.getparent().remove(tag)
我在这段webpage <中使用了这段代码删除有问题的锚标签,这些锚标签具有属性 name =“ 2”和id =“ 2” / p>
当执行该行时,我仍然能够看到标记及其属性,并且当我遍历所有子代时,我仍然能够看到我删除的元素
remove方法到底能做什么?为什么被删除的标签仍然存在?
这是执行该行后调试器的屏幕截图。
答案 0 :(得分:2)
从父节点中删除节点时,该节点本身仍然存在,但仅与父节点分离。这使您可以将“已删除”节点附加到其他父节点。但是,如果您不将节点附加到新的父节点上,那么从根节点的角度来看,该节点是很好的删除对象。
要保留要删除的标记节点的子代,可以像这样在相同的索引处将它们修剪到标记的父代:
parent = tag.getparent()
index = parent.index(tag)
for child in tag.getchildren()[::-1]: # in reverse order so that we can keep inserting at the same index while preserving the original order
tag.remove(child)
parent.insert(index, child)
parent.remove(tag)
或者您可以简单地使用drop_tag
方法:
tag.drop_tag()