python - 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'
(显然这个错误是指每一行。
你能帮我吗?
解决方案
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
你的字符串的一部分。无论如何,我都会留下它。
推荐阅读
- python - 在 Geopandas 的特定距离内过滤和合并两个数据框中的点
- javascript - 在单击引导下拉列表时对数组中的 AZ 和 ZA 进行排序
- unity3d - Unity3D BezierCurve - 跟随 AI 的 Spline Walker?
- c++ - 手动创建二进制文件 C++
- java - IDEA 编译器错误 Unknown version '8', no version setting will be given to the compiler
- python-3.x - 尝试使用 Homebrew 更新 Python 3
- python - 为 Keras 预处理数据
- python - gcc 6.3 --> 致命的 Python 错误:Py_Initialize:无法获取语言环境编码 ModuleNotFoundError:没有名为“编码”的模块
- node.js - 从节点调用 nodejs 获取输入
- javascript - 保存回调nodejs的返回