2016-09-26 117 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]' –

相關問題