我对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'
(很明显,此错误涉及到每一行。
可以帮我吗?
答案 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)
您的问题是运算符*