2016-09-26 116 views
-4

我想将一个python列表转换为浮点数。 这是问题的范围缩小:ValueError:无法将字符串转换为浮点数:'[231.49377550490459]'

loss = ['[228.55112815111235]', '[249.41649450361379]'] 
print(float(loss[0])) 
错误

和结果:

ValueError: could not convert string to float: '[231.49377550490459]' 

谁能帮助我?

+3

在一个字符串转换为浮动您不能转换列表。 – Li357

+1

'[231.49377550490459]'不是字符串内部的浮点数,'231.49377550490459'是 –

+1

更好的问题可能是:为什么要以该格式开始的数据? – jonrsharpe

回答

1

去掉方括号。

float(loss[0].replace('[', '').replace(']', '')) 
+1

剥离更容易完成'loss [0] .strip('[]')'.. –

0

如果字符串列表中总是只有一个元素,则可以使用字符串切片。

loss = ['[228.55112815111235]', '[249.41649450361379]'] 
print(float(loss[0][1:-1])) 
0

这是因为您的float值被封装在括号内。你会得到ValueError,因为这不是有效的浮点值。为了转换它,你必须先删除它们。例如:

>>> my_val = '[228.55112815111235]' 
>>> print float(my_val[1:-1]) 
228.551128151 

你的情况,你必须写:

>>> loss = ['[228.55112815111235]', '[249.41649450361379]'] 
>>> float(loss[0][1:-1]) 
228.55112815111235 

如果你想整个列表转换的float列表,你可以使用map()功能:

>>> map(lambda x: float(x[1:-1]), loss) 
[228.55112815111235, 249.4164945036138] 
0

如果您想将列表值转换为浮点数,您可以使用列表理解:

loss = [float(loss[i][1:-1]) for i in range(len(loss))] 

那么你的损失清单看起来就像这样:

[228.55112815111235, 249.4164945036138] 
+1

更好:'[float(i [1:-1])for i in loss]' –

相关问题