首页 > 解决方案 > python3 ValueError: could not convert string to float , value = float(value) is not valid

问题描述

我对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:无法将字符串转换为浮点数:'6.00*1e-34\n'

(显然这个错误是指每一行。

你能帮我吗?

标签: pythonstringnumpy

解决方案


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

最终,您将希望每一行的格式如下: 6.00e-34

仔细观察,似乎唯一的区别在于\n行尾和1*中间。

您可以通过调用该方法去除字符串( )末尾的换行符,并替换为空字符串以达到上述格式。\n.strip() *1

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

编辑:似乎换行符的存在并不重要 - 所以你只需要替换*1你的字符串的一部分。无论如何,我都会留下它。


推荐阅读