ElementTree:Element.remove()跳跃迭代

ElementTree:Element.remove()跳跃迭代,第1张

ElementTree:Element.remove()跳跃迭代

您正在遍历活动树:

for elem2 in tree.iter(tag='second'):

然后在迭代时进行更改。该迭代的“计数器”将不被告知更改的一些元素,所以元素0前瞻性和上元件数1移除元素,迭代器然后移动,但什么时候
单元号1现在是单元号0。

首先捕获所有元素的列表,然后在其上循环:

for elem2 in tree.findall('.//second'):

.findall()
返回结果列表,该列表在您更改树时不会更新。

现在迭代不会跳过最后一个元素:

>>> print ET.tostring(tree)<zero>  <First>    <second>      <third-num>1</third-num>      <third-def>object001</third-def>      <third-len>458</third-len>    </second>    </First></zero>

这种现象不仅限于ElementTree树;请参阅循环“忘记”以删除一些项目



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5629822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存