我們如何轉換
Python的字符串轉換爲列出
['[0.0034596999 0.0034775001 0.0010091923]']
到
[[0.0034596999 0.0034775001 0.0010091923]]
不帶引號。我嘗試使用eval,列表,元組,替換和s.strip(),但似乎沒有任何工作。任何人都可以在這個
我們如何轉換
Python的字符串轉換爲列出
['[0.0034596999 0.0034775001 0.0010091923]']
到
[[0.0034596999 0.0034775001 0.0010091923]]
不帶引號。我嘗試使用eval,列表,元組,替換和s.strip(),但似乎沒有任何工作。任何人都可以在這個
lst = ['[0.0034596999 0.0034775001 0.0010091923]']
item = ''.join(lst)
final_str = "[" + item + "]"
print (final_str)
雖然此代碼片段可能會解決問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – MattDMo
使用.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]]
如果你想有一個清單,不要使用數組()。
使用replace
和eval
:
>>> x = ['[0.0034596999 0.0034775001 0.0010091923]']
>>> x = [eval(x[0].replace(' ',','))]
>>> x
[[0.0034596999, 0.0034775001, 0.0010091923]]
當然,你可以簡單地將其轉換爲numpy
陣列。
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()]
是輸入一個字符串還是一個包含字符串的列表?你的意思是結果是一個沒有單引號的字符串,或者結果是一個包含一個包含浮點值或其他值的列表的列表?如果第一個,使用'replace()'方法刪除所有引號。如果第二個,意識到列表的通常打印包括值之間的逗號。 –
什麼是數據的來源?你如何修復它,而不是以後? –
它是一個字符串還是一個列表? –