获取错误“;列表。删除(x):x不在列表中;而使用python仅从XML中获取所需元素

获取错误“;列表。删除(x):x不在列表中;而使用python仅从XML中获取所需元素,python,python-3.x,xml,elementtree,Python,Python 3.x,Xml,Elementtree,我编写了一个代码,从tes.xml中删除列表lis中不存在的国家,并在删除国家后生成更新的xmloutput.xml。但是在生成输出xml时出错 XML: 错误: 2 5 69 Traceback (most recent call last): File "main.py", line 11, in <module> root.remove(country) ValueError: list.remove(x): x not in list 2 5

我编写了一个代码,从
tes.xml
中删除列表
lis
中不存在的国家,并在删除国家后生成更新的xml
output.xml
。但是在生成输出xml时出错 XML:

错误:

2
5
69
Traceback (most recent call last):
  File "main.py", line 11, in <module>
    root.remove(country)
ValueError: list.remove(x): x not in list
2
5.
69
回溯(最近一次呼叫最后一次):
文件“main.py”,第11行,在
根。删除(国家)
ValueError:list。删除(x):x不在列表中
预期产出:

<data>
    <country>
      <state>
        <rank updated="yes">2</rank>
        <year>2008</year>
        <gdppc>141100</gdppc>
        <neighbor name="Austria" direction="E"/>
        <neighbor name="Switzerland" direction="W"/>
      </state>  
    </country>
    <country>
      <state>
        <rank updated="yes">5</rank>
        <year>2011</year>
        <gdppc>59900</gdppc>
        <gpc>59900</gpc>
        <neighbor name="Malaysia" direction="N"/>
      </state>  
    </country>
</data>

2.
2008
141100
5.
2011
59900
59900
root.remove()
仅删除根元素的直接子元素。
元素确实是直接的子元素,但是代码中的
国家
变量指的是
元素

这项工作:

for country in root.findall('.//country'):
    rank = country.find('state/rank').text
    print(rank)
    if rank not in lis:
        root.remove(country)
root.remove()
只删除根元素的直接子元素。
元素确实是直接的子元素,但是代码中的
国家
变量指的是
元素

这项工作:

for country in root.findall('.//country'):
    rank = country.find('state/rank').text
    print(rank)
    if rank not in lis:
        root.remove(country)

收到答案后,请不要更改问题。我解释了问题所在,但现在我的答案不再有意义了,我没有改变。同一个问题有更新错误。什么?你确实改变了问题。不要那样做。如果您有我的回答没有解决的其他问题,请提出新问题。当然可以,先生。。那不成问题。我将询问新任务,并将此问题更新为您回答的旧问题。我只能在90分钟后发布:(在收到答案后,请不要更改问题。我解释了问题的原因,但现在我的答案不再有意义。我没有更改。同一个问题有更新错误。什么?您确实更改了问题。不要这样做。如果您有我的答案未解决的其他问题,请提出新问题。当然,先生。。这不是问题。我会问新任务,并将此问题更新为您回答的旧问题。我只能在90分钟后发布:(如果在XML中添加额外的标记大陆,我尝试了相同的理解,但它再次给了我错误。我只是尝试了解它是如何工作的。如果在XML中添加额外的标记大陆,我尝试了相同的理解,但它再次给了我错误。我只是尝试了解它是如何工作的
for country in root.findall('.//country'):
    rank = country.find('state/rank').text
    print(rank)
    if rank not in lis:
        root.remove(country)