如果字符串没有标准格式,将字符串转换为float的方法是什么?
在我的特殊情况下,我需要阅读这些字符串并将其转换为 float
-7.5-4
7.5-5
对应于数字-7.5E-4和7.5E-5
我需要最快,因为我正在加载大尺寸文件。
由于
答案 0 :(得分:1)
这个lambda适用于您的测试用例(也带有前导'+'):
to_num = lambda s: (1,-1)[s[0]=='-']*
float(s.lstrip('-+').replace('-','E-').replace('+','E+'))
如果有一个前导' - ',则开头(1,-1)[s[0]=='-']
负责乘以-1,然后浮动转换带去'+'和' - '标志,并替换嵌入的'+'和' - 'with'E +'和'E-',允许有效转换浮动。