python3 ValueError:无法将字符串转换为float,value = float(value)无效

时间:2019-03-07 11:53:40

标签: python string numpy

我对python命令有疑问。我希望程序从文件中读取特定行,在这里我没有问题。问题是当我必须以浮点数转换线时(我需要浮点数来计算一些方程)。我的程序是:

f=open('coeff.txt')
lines=f.readlines()

k1=lines[0]

k1 = float(k1)


k2=lines[1]

k2 = float(k2)


k3=lines[2]

k3 = float(k3)

k4=lines[3]

k4 = float(k4)

文件coeff.txt是:

1.2*1e-1   

6.00*1e-34

1.13*1e-4

6.9*1e-16

即1.2 * 10 ^(-1),6 * 10 ^(-34),1.13 * 10 ^(-4),6.9 * 10 ^(-16)

我得到了错误:

  

ValueError:无法将字符串转换为float:'6.00 * 1e-34 \ n'

     

(很明显,此错误涉及到每一行。

可以帮我吗?

2 个答案:

答案 0 :(得分:2)

Python不知道如何将'6.00*1e-34\n'解释为浮点数。您必须先清理数据,然后才能实际使用它。

最终,您将希望每一行都具有以下格式: 6.00e-34

仔细观察,似乎唯一的区别是该行结尾处的\n和中间的1*

您可以通过调用newline character方法和.strip() \n并在字符串(*1的末尾摆脱replace空字符串以获取上述格式。

val = '6.00*1e-34\n'
cleaned_val = val.strip().replace('*1', '')
print(float(cleaned_val))
>>> 6e-34

编辑:似乎换行符的存在并不重要-因此,您只需要替换字符串的*1部分即可。无论如何,我还是要留下它。

答案 1 :(得分:1)

您的问题是运算符*