Python 元素在我要删除它时不存在 12之二 12之二 1. 3700744900020 气球 0 4634510541685140 赤田 1. 707003 哈科莫 0 9782756076430 画卷2 0 附属品 小雕像 0 秋子 秋子 1. 秋叶猴 秋叶猴 1. 阿库马 阿库马 1. 阿尔宾·米歇尔 米歇尔 1. 营养 营养5.5 0 阿玛尔蒂 阿玛尔蒂 1. 动漫漫画出版社 动漫漫画出版社 1. 安卡马 安卡马 1. 阿特法克 阿特法克 1. 亚洲区 亚洲区 1. 阿西米尔 阿西米尔 1. 华硕 华硕 1. 原子俱乐部 原子俱乐部 1. 阿特拉比尔 阿特拉比尔 1. ...

Python 元素在我要删除它时不存在 12之二 12之二 1. 3700744900020 气球 0 4634510541685140 赤田 1. 707003 哈科莫 0 9782756076430 画卷2 0 附属品 小雕像 0 秋子 秋子 1. 秋叶猴 秋叶猴 1. 阿库马 阿库马 1. 阿尔宾·米歇尔 米歇尔 1. 营养 营养5.5 0 阿玛尔蒂 阿玛尔蒂 1. 动漫漫画出版社 动漫漫画出版社 1. 安卡马 安卡马 1. 阿特法克 阿特法克 1. 亚洲区 亚洲区 1. 阿西米尔 阿西米尔 1. 华硕 华硕 1. 原子俱乐部 原子俱乐部 1. 阿特拉比尔 阿特拉比尔 1. ...,python,xml,loops,python-3.7,elementtree,Python,Xml,Loops,Python 3.7,Elementtree,当我运行一个简单的循环来查找XML文件时,我可以找到每个孩子,总共203个 在所有这些子项中,我想删除那些带有0的子项,它们总共代表63个 我的问题是,当我用一个简单的条件运行同一个循环,只删除那些尊重该条件的人时,我不能删除所有人,只删除了43个 9782756076430 画卷2 0 ... 营养 营养5.5 0 例如,当这些节点停留时 这是我的密码: tree=ET.parse(“test.xml”) root=tree.getroot() 对于根目录中的子目录: if child.f

当我运行一个简单的循环来查找XML文件时,我可以找到每个孩子,总共203个

在所有这些子项中,我想删除那些带有
0
的子项,它们总共代表63个

我的问题是,当我用一个简单的条件运行同一个循环,只删除那些尊重该条件的人时,我不能删除所有人,只删除了43个


9782756076430
画卷2
0
...
营养
营养5.5
0
例如,当这些节点停留时

这是我的密码:

tree=ET.parse(“test.xml”)
root=tree.getroot()
对于根目录中的子目录:
if child.find('Livre').text!="1":
root.remove(子级)
write(“output.xml”)

像这样更改for循环,使其在列表上迭代,然后删除单个元素不会变得混乱

for child in list(root):
    if child.find('Livre').text != "1":
        root.remove(child)

如果XML只包含一个子元素(这是一个有问题的子元素),它会工作吗?可能在迭代过程中从
根中删除元素会弄乱迭代过程-您可以在删除每个子元素后尝试重新启动整个for循环吗?现在可以工作了吗?或者更改
for
语句,使其在列表中迭代,我认为
对于list(root)中的child:
应该可以工作。我认为
root
是一个在活动XML上迭代的生成器,我猜它不喜欢在迭代时删除元素。使用
list(root)
从生成器中创建一个简单的列表。不需要像在其他站点中一样将[RESOLVED]或[RESOLVED]放在标题中。在Stack Overflow中,接受答案上的绿色复选标记和已指示。也不需要在标题中添加标签,请参阅。