Python科学记数法格式

时间:2018-02-26 18:48:12

标签: python floating-point scientific-notation

我有一大组数据,其值很小,大约为10 ^ -3。然而,如果没有" e"例如,9.993e​​-3在文件中写为9.993-3。这会在numpy中产生问题。我怎样才能添加" e"在最后一位数和负号之间?

一些注意事项:数据集包含在没有分隔符的文件中(数字占用固定宽度),有些数据不一定是10 ^ -3。

小数据片段:

11.752811.950003-6.973-3
11.772591.950003 -.00636
11.792371.950002-5.746-3

3 个答案:

答案 0 :(得分:0)

s='9.993-3'
s1=s[:s.index('-')] + 'e' + s[s.index('-'):]
print(s1)

答案 1 :(得分:0)

当您引用数据时,您可以使用:

str.replace("-", "e-")

如果您有一些负数据值,请使用正则表达式:

import re
for line in some_file:
    line = re.sub(r'(?<=[1-9]{1,})(-)', 'e-', line)

答案 2 :(得分:0)

这是我理解您的数据格式的解决方案。如果我误解了,请确认确切的格式。

data = '11.752811.950003-6.973-311.772591.950003 -.0063611.792371.950002-5.746-3' 
fixed_width = 8

numbers = []
for i in range(0, len(data), fixed_width):
    num = data[i:i+fixed_width]
    num = float(num[:2] + num[2:].replace('-', 'E-'))
    numbers.append(num)