2016-08-06 106 views
-3

我們如何轉換
Python的字符串轉換爲列出

['[0.0034596999 0.0034775001 0.0010091923]'] 


[[0.0034596999 0.0034775001 0.0010091923]] 

不帶引號。我嘗試使用eval,列表,元組,替換和s.strip(),但似乎沒有任何工作。任何人都可以在這個

+2

是輸入一個字符串還是一個包含字符串的列表?你的意思是結果是一個沒有單引號的字符串,或者結果是一個包含一個包含浮點值或其他值的列表的列表?如果第一個,使用'replace()'方法刪除所有引號。如果第二個,意識到列表的通常打印包括值之間的逗號。 –

+2

什麼是數據的來源?你如何修復它,而不是以後? –

+0

它是一個字符串還是一個列表? –

回答

-2
lst = ['[0.0034596999 0.0034775001 0.0010091923]'] 
item = ''.join(lst) 
final_str = "[" + item + "]" 
print (final_str) 
+3

雖然此代碼片段可能會解決問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – MattDMo

0

使用.split()和.replace()幫助:

b = ['[0.0034596999 0.0034775001 0.0010091923]'] 
b = b[0].split(' ') 
a = array([[float(x.replace('[','').replace(']','')) for x in b]]) 
print a 
[[ 0.0034597 0.0034775 0.00100919]] 

如果你想有一個清單,不要使用數組()。

2

使用replaceeval

>>> x = ['[0.0034596999 0.0034775001 0.0010091923]'] 
>>> x = [eval(x[0].replace(' ',','))] 
>>> x 
[[0.0034596999, 0.0034775001, 0.0010091923]] 

當然,你可以簡單地將其轉換爲numpy陣列。

0

eval失敗的原因是因爲您認爲字符串的字符串不是有效的列表表示 - 它不包含逗號。

您可以將其轉換爲真正的列表,方法是將方括號分開,將剩餘的字符串拆分爲表示數字的單獨字符串,並最終將每個這樣的字符串轉換爲數字。這裏是代碼:

data = ['[0.0034596999 0.0034775001 0.0010091923]'] 

s = data[0] 
for ch in "[]": # remove barckets 
    s = s.replace(ch, '') 

# splitting and converting to a list of floats 
lst = [float(x) for x in s.split()]