Python XML 解析器将数字加载为字符串

标签 python xml

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

阅读它

导入 xml.etree.ElementTree 作为 ET

我如何提取值的示例是

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

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

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

一切都很顺利,直到我查看了 csv 文件中的数据。只有少数值作为字符串加载。根据值,它们以 float 或整数形式进入 Excel。我试过了

Year1_Q=[Year1_Q 中 x 的映射(int, x)] Year1_P=[Year1_P 中 x 的映射(float, x)] Year2_Q=[Year2_Q 中 x 的映射(int, x)] Year2_P=[Year2_P 中 x 的映射(float, x)]

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

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

有些数字作为数字加载,而另一些数字作为字符串加载,这对我来说没有意义。它们在 xml 文件中是相同的。

有人遇到过这个问题吗?

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

最佳答案

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

你可以使用

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

使有问题的值可见。

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

关于Python XML 解析器将数字加载为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34572576/

相关文章:

python - 写入Excel后如何将带有符号的值保留为数据框中的数字?

python - 如何计算在数据框python中的特定值之前出现的次数?

python - 使用python同时播放两个正弦音

javascript - 在 Javascript 中查询 XML

python - 将按钮信号绑定(bind)到 Qt 中的插槽所需的另一种解决方案

python - 带有 Flask 应用程序的 uwsgi 给出 "callable not found or import error"

css - 使用 CSS 设置 XML 样式时,如何引用包含句点或冒号的标签名称?

android - 如何在 android 的 xml 中将我的文本轮廓着色为黑色

java - 如何通过适配器将图像数组传递给 NewActivity

xml - 错误 : XML Content does not seem to be XML | R 3. 1.0