在Python中解析带指数的浮点字符串

7 投票
2 回答
12549 浏览
提问于 2025-04-15 22:38

我有一个很大的文件,里面的数字是这样的格式:6,52353753563E-7。这个字符串里有个指数部分。用float()函数处理这个字符串时,它就出错了。

虽然我可以写一些自定义代码,把这个字符串处理成float()能接受的格式,但我想找一种更符合Python风格的方法来把这些数字转换成浮点数(就像把格式字符串传递到某个地方那样)。老实说,我对float()不能处理这种带指数的字符串感到很惊讶,因为这其实是很常见的情况。

我现在用的是Python 2.6,不过如果需要的话,3.1也是可以的。

2 个回答

1

你的问题不在于指数,而在于逗号。
在Python 3.1中:

>>> a = "6.52353753563E-7"
>>> float(a)
6.52353753563e-07
15

这和指数没有关系。问题是用逗号代替了小数点。

>>> float("6,52353753563E-7")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for float(): 6,52353753563E-7
>>> float("6.52353753563E-7")
6.5235375356299998e-07

想了解更一般的方法,可以看看 locale.atof()

撰写回答