我在将str
转换为float
时遇到问题。我喜欢this post,但这次它不起作用,因为我有这种格式的数字:
5.50000e+000 5.50000e+001 5.50000e+002 5.50000e+003
如果我更改格式(例如使用5.5 55 550 5500
),它可以正常工作。 Traceback仅声明:
Traceback (most recent call last):
File "phresREADER.py", line 27, in <module>
tra = float(stri)
ValueError: could not convert string to float:
我该怎么办?有特定的命令吗?
我的代码是:
my_line = f.readline()
avg_energySTR = [str(i) for i in my_line.split(' ')]
for stri in avg_energySTR:
tra = float(stri)
当我打印avg_energySTR时,我得到了
[&#;;;;;;;;;;; ;,&#39; \ n&#39;]
答案在KOJIRO&#39;评论中
答案 0 :(得分:1)
您在其中一个列表单元格中有'\n'
。
因此,当迭代尝试将'\n'
转换为浮动时,它会引发ValueError
试试这段代码:
avg_energySTR = "5.50000e+000 5.50000e+001 5.50000e+002 5.50000e+003"
avg_energySTR = [str(i) for i in avg_energySTR.split()]
avg_energy = []
for stri in avg_energySTR:
tra = float(stri)
avg_energy.append(tra)
print (avg_energy)
你也可以自己分开:
avg_energySTR = "5.50000e+000 5.50000e+001 5.50000e+002 5.50000e+003 \n"
avg_energy = []
for stri in avg_energySTR.split():
.......
答案 1 :(得分:1)
变化:
avg_energySTR = [str(i) for i in my_line.split(' ')]
要:
avg_energySTR = my_line.split()
从评论中可以看出,在行尾有额外的空格。如果使用默认的拆分算法(通过不传递参数或传递None
),则将忽略尾随空格。