gpt4 book ai didi

Python ElementTree 从根目录中删除元素时出错

转载 作者:太空宇宙 更新时间:2023-11-04 07:10:01 26 4
gpt4 key购买 nike

尝试从 xml 文档中删除元素时出现以下错误。“ValueError: list.remove(x): x 不在列表中”这是代码,错误发生在删除的行上。

import xml.etree.ElementTree as ET
tree = ET.parse("AddInClasses.xml")
rootElem = tree.getroot()
for class2 in rootElem.findall("Transforms/class"):
name2 = class2.find("name")
if name2.text == "Get Field":
rootElem.remove(class2)
tree.write("AddInClassesTrimmed.xml")

最佳答案

您正在遍历不是根的直接子元素的元素。您需要获取对直接父级的引用而不是

使用 ElementTree 就没那么容易了,元素上没有父指针。您需要先遍历 Transforms,然后再遍历 class:

for parent in rootElem.findall("Transforms[class]"):
for class2 in parent.findall("class"):
name2 = class2.find("name")
if name2.text == "Get Field":
parent.remove(class2)

我添加了一个额外的循环,用于查找所有至少包含一个 class 元素的 Transforms 元素。

如果您要改用 lxml,那么您可以只使用 class2.getparent().remove(class2)

关于Python ElementTree 从根目录中删除元素时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15980933/

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