gpt4 book ai didi

python - 使用 ET 删除 Python 中的元素

转载 作者:行者123 更新时间:2023-12-01 05:21:59 25 4
gpt4 key购买 nike

我的代码似乎出现值错误,但我不确定原因。

ValueError: list.remove(x): x not in list

当我使用打印语句时,我似乎正确找到了日志设置,因为它打印了我期望看到的位置和编号。我只是不确定为什么无法删除它。

XML
...
<security>
<rules>
<entry name="blah">
<log-setting> log-forwarding-main

这是我尝试过的两个脚本

import xml.etree.ElementTree as ET
tree = ET.parse('filelocation')
rules = tree.findall('.//security/rules/entry')

for rem_rule in rules:
log = rem_rule.findall('log-setting')
rem_rule.remove(log)
tree.write('newfilelocation')

并在不同的帖子中尝试过此操作

import xml.etree.ElementTree as ET
tree = ET.parse('filelocation')
rules = tree.findall('.//security/rules/entry')

for rem_rule in rules[:]:
for rem_rule in rules[:]:
log = rem_rule.findall('log-setting')
rem_rule.remove(log)
tree.write('newfilelocation')

最佳答案

根据文档xml.etree.ElementTree.Element有一个函数.remove(subelement)。但是,.findall() 将返回一个列表。因此,将 rem_rule.remove(log) 替换为:

for element in log:
rem_rule.remove(element)

问题解决了。您的完整代码片段如下所示

import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
rules = tree.findall('.//security/rules/entry')

for rem_rule in rules:
log = rem_rule.findall('log-setting')
for element in log:
rem_rule.remove(element)
tree.write('newtest.xml')

关于python - 使用 ET 删除 Python 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22128392/

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