在Python中解析带指数的浮点字符串
我有一个很大的文件,里面的数字是这样的格式: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()