2016-01-22 40 views
-2

如果字符串没有标准格式,将字符串转换为浮点数的方式是什么?Python读取非标准数字格式

在我的特殊情况,我需要阅读这些字符串并将其转换为浮动

-7.5-4 
7.5-5 

对应于数字-7.5E-4和7.5E-5

我需要最快的,因为我正在加载大尺寸文件。

感谢

+0

什么是'-7.5-4'?它是'-7.5 - 4' ='-11.4'?它不是一个_non标准格式_ – Tushar

+0

我不知道它是最快的方式,但不会像'float(re.sub(r'([0-9。] [ - +)',r'\ 1e',mystring))'工作? – L3viathan

+2

我不知道你为什么得到了倒票或者投票结束。这对我来说似乎是一个很好的问题。您可以使用正则表达式的组合来分割字符串和字符串格式以插入“E”,然后将字符串转换为浮点型float('{} E {}'.format(* re.match(r'( - ?\ d + \。\ d +)( - \ d *)',test [0])。groups()))' – tdelaney

回答

1

这拉姆达与测试情况下工作(也有领先的“+”):

to_num = lambda s: (1,-1)[s[0]=='-']* 
          float(s.lstrip('-+').replace('-','E-').replace('+','E+')) 

开幕(1,-1)[s[0]=='-']需要乘以-1的护理,如果有一个领先“ - ',然后浮动转换条带领'+'和' - '标志,并用'E +'和'E-'替换嵌入的'+'和' - ',允许有效的转换浮动。

+0

它工作完美, –