gpt4 book ai didi

python - 在 etree 上使用 iterdescendants() 时,可以修改树吗?

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:56 24 4
gpt4 key购买 nike

(Python 3.2)

我正在使用 etree 来解析一些 XML。为此,我使用 iterdescendants() 递归地迭代文档。所以,类似于:

for elem in doc.iterdescendants():
if elem.tag == "tag":
pass # Further processing

有时,我处理的父标记包含我希望防止在以后的递归中处理的子标记。毁掉 child 可以吗?

在最初的测试中,我尝试过:

for child in elem.getchildren(): child.clear()

由于某种原因,这会导致紧随 elem 之后的元素被处理。就像元素也被删除一样。

然后我尝试了这个,它有效(因为它删除了父级及其子级,但不会导致父级的任何后续 sibling 被跳过/影响):

elem.clear()

有人能解释一下吗?谢谢,

最佳答案

我用以下代码代替了您的代码,它似乎可以工作,删除所有子元素。我使用 iterfind 查找带有该标签的所有后代并将其删除。

for element in doc.iterfind('.//%s'%tag):
element.getparent().remove(element)

关于python - 在 etree 上使用 iterdescendants() 时,可以修改树吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6963931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com