Python将项追加到xml文件中的数组读取

时间:2017-03-10 20:02:50

标签: python xml

我是python的新手并且学习读取xml文件。 运行我的代码来附加项目给了我重复的数组。我想它是循环遍历所有追加的项目并且每次都返回一个数组。我只想要一个数组所有项目的数组。我做错了什么?

代码如下:

countries_im = []
for country in root.findall('./country'):
        data = {
            'name': None,
            'infant_mortality': None
        }
        data['name'] = country.find('./name').text
        data['infant_mortality'] = country.findtext('./infant_mortality')
        if data['infant_mortality'] is not None:
            countries_im.append(data['infant_mortality'])
            print(countries_im)

结果如下:

['13.19']
['13.19', '4.78']
['13.19', '4.78', '7.9']
['13.19', '4.78', '7.9', '6.16']
['13.19', '4.78', '7.9', '6.16', '3.69']
['13.19', '4.78', '7.9', '6.16', '3.69', '3.31']

我只想要最后一个数组。谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

您的代码未返回多个列表。事实上,它没有返回任何东西。您只有一个现有列表通过追加更改其内容。

您显示的结果是每次将项目追加到列表时调用print(countries_im)的输出。

如果您将代码更改为:

countries_im = []
for country in root.findall('./country'):
        data = {
            'name': None,
            'infant_mortality': None
        }
        data['name'] = country.find('./name').text
        data['infant_mortality'] = country.findtext('./infant_mortality')
        if data['infant_mortality'] is not None:
            countries_im.append(data['infant_mortality'])
print(countries_im)

您将看到内存中的列表中包含所有项目。

答案 1 :(得分:1)

如果我理解正确,您的代码是正确的,您只需要将print语句移到for循环之外。换句话说,每次添加内容时都会打印相同的数组。因此,在for循环(已完成的数组)结束时,您最终会得到您想要的结果。