Python XML Parser将数字加载为字符串

时间:2016-01-03 01:47:03

标签: python xml

我有一个xml文件,其中包含大约15000个值。我用

读了它

import xml.etree.ElementTree as ET

我如何提取值的一个例子是

def get_year1_quantity(element): return element[5][0].text 我获取了所有数据并将不同的值放入列表中,然后将它们放入pandas数据帧中。

我试图通过以下方式过滤数据:

filtered=this[this.Year1_Q > this.Year2_Q]

一切顺利,直到我查看csv文件中的数据。只有少数值作为字符串加载。根据值,它们作为浮点数或int进入excel。我试过了

Year1_Q=[map(int, x) for x in Year1_Q] Year1_P=[map(float, x) for x in Year1_P] Year2_Q=[map(int, x) for x in Year2_Q] Year2_P=[map(float, x) for x in Year2_P]

但它给了我一个错误,Year1_Q = [map(int,x)for Year1_Q中的x]

ValueError:无法将字符串转换为int:

对我来说,有些数字是作为数字加载的,而其他数字是作为字符串加载的。它们在xml文件中是相同的。

以前有没有人遇到这个问题?

我尝试了this[columns]=this[columns].astype(float)并为float()获得了无效的文字:6,625.00

1 个答案:

答案 0 :(得分:1)

XML是一个文本文件,只有您知道它是应该被解释为字符串还是数字。当你需要它作为Python中的数字时,你必须显式转换它(就像你使用map一样)。 CSV也是一种文本格式。

您可以使用

try:
    Year1_Q=[map(int, x) for x in Year1_Q]
except ValueError:
    print(repr(Year1_Q))

使问题值可见。

CSV不是原生Excel格式。 Excel可能是值得责备的工具。当您双击CSV文件或启动Excel并通过菜单打开CSV文件时,结果可能会有所不同(至少对于某些旧版本的Excel,这是真实的观察)。