如何删除lxml中的标签?

首先,我关注了这个问题,但我仍然对 remove 方法有问题。

tag.getparent().remove(tag)

我使用这段代码删除 了此网页中具有属性name="2" 和 id = "2" 的锚标记

当该行被执行时,我仍然能够看到标签及其属性,当我遍历所有孩子时,我仍然能够看到我删除的元素

remove 方法究竟做了什么,为什么被删除的标签仍然存在?

这是该行执行后调试器的屏幕截图。

http://img1.mukewang.com/60f7bda40001220505880331.jpg

慕桂英3389331
浏览 236回答 1
1回答

侃侃尔雅

当您从其父节点中删除节点时,该节点本身仍然存在,但只是与父节点分离。这允许您将“已删除”节点附加到不同的父节点。但是,如果您不将节点附加到新的父节点,那么从根节点的角度来看,该节点与删除一样好。为了保留被移除的标签节点的子节点,你可以像这样在相同的索引处将它们修剪到标签的父节点: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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python