字符串未按预期转换为浮点数

时间:2014-04-28 14:55:00

标签: python floating-point

我在将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;评论中

2 个答案:

答案 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),则将忽略尾随空格。