現在我有一個這樣的字符串:Python數據陣列字符串轉換成列出
data = "[[1,'00007',0.19],[2,'00008',0.29],[3,'00009',0.49],[4,'00010',0.59]]"
print(type(data))
<class 'str'>
在Python這就像數據陣列,但是它是一個字符串,現在我想這個字符串轉換爲真實數據陣列<class 'list'>
,我應該怎麼做這個
現在我有一個這樣的字符串:Python數據陣列字符串轉換成列出
data = "[[1,'00007',0.19],[2,'00008',0.29],[3,'00009',0.49],[4,'00010',0.59]]"
print(type(data))
<class 'str'>
在Python這就像數據陣列,但是它是一個字符串,現在我想這個字符串轉換爲真實數據陣列<class 'list'>
,我應該怎麼做這個
你可以做
eval(data)
解析其內容。
使用'eval'被認爲是不好的 – The6thSense
這是不安全的,你說得對。簡單地取決於應用程序 - 如果在沒有用戶交互的小腳本中使用,它應該不是問題,我會說。 – elzell
只是想添加它,因爲OP應該知道何時使用它:) – The6thSense
使用ast.literal_eval:如文檔says-
安全評估的表達式節點或Unicode或Latin-1的編碼含有一個Python字面或容器顯示 字符串。字符串,數字,元組,列表,http://stardict.sourceforge.net/Dictionaries.php下載,布爾值,和 無:提供可以僅由下面的Python字面 結構
的字符串或 節點。
>>> import ast
>>> data = "[[1,'00007',0.19],[2,'00008',0.29],[3,'00009',0.49],[4,'00010',0.59]]"
>>> ast.literal_eval(data)
[[1, '00007', 0.19], [2, '00008', 0.29], [3, '00009', 0.49], [4, '00010', 0.59]]
>>> print(type(ast.literal_eval(data)))
>>> <type 'list'>
避免使用eval
,除非真正需要的。詳情at。
從數據的定義繼:
data_list = data.replace("[","").replace("]","").replace("'","").split(",")
new_list = [data_list[x:x+3] for x in range(0, len(data_list), 3)]
雖然事情在現在的結果是一個字符串。
看看https://stackoverflow.com/questions/743806/split-string-into-a-list-in-python靈感。 –
你如何得到'數據'?也許你不應該將數組轉換爲字符串? – furas