我有一個表示嵌套串列的字串:
string = [[1,2,3],[4,5,6]]
并且想將其轉換為串列:
list = [[1, 2, 3], [4, 5, 6]]
我已經嘗試使用string.split("]'[").split(', ')但它仍然回傳[ ['1,2,3],[4,5,6'] ]
有什么幫助嗎?謝謝!
uj5u.com熱心網友回復:
假設你有一個字串 likestring = "[[1,2,3],[4,5,6]]"并且你想將它轉換成一個串列物件 like lst = [[1,2,3],[4,5,6]],你可以簡單地使用 eval 方法:
lst = eval(string)
uj5u.com熱心網友回復:
如果我正確理解了您的問題,則需要eval()內置。從python 3.9開始,更好用ast.literal_eval(node_or_string),更安全:
from ast import literal_eval
a_str = '[[1,2,3],[4,5,6]]'
b_list = eval(a_str)
print(b_list)
# from python 3.9 better to use this, instead of eval():
c_list = literal_eval(a_str)
print(c_list)
讀:
https://docs.python.org/3/library/ast.html#ast.literal_eval https://docs.python.org/3/library/functions.html#eval
uj5u.com熱心網友回復:
如果您使用外部庫沒有問題,您可以使用它pyyaml來實作:
>>> from yaml import CLoader as Loader, CDumper as Dumper
>>> import yaml
>>> string = "[[1,2,3],[4,5,6]]"
>>> yaml.load(string, Loader=Loader)
[[1, 2, 3], [4, 5, 6]]
uj5u.com熱心網友回復:
ast.literal_eval(string)就是你要找的。在這種情況下,最終看起來像
from ast import literal_eval
string = "[[1,2,3],[4,5,6]]"
list = literal_eval(string)
print(list)
從 python使用eval被認為是危險的,特別是如果它的輸入是在代碼之外完成的。這是一個安全的替代方案,仍然可以滿足您的需求。
您的第一種方法存在幾個問題(如果您不想被講授,請忽略這部分)。首先,您的變數似乎string實際上已經是一個串列而不是一個字串。我會假設這是一個錯字,而你的意思是string = "[[1,2,3],[4,5,6]]"。
str.split(sep)接受一個將用作分隔符的字串,因此str.split("]'[")將嘗試在"]'["您希望它在其中任何一個字符上拆分的確切字串上進行拆分。結果是給你一個單一字串的串列,["[[1,2,3],[4,5,6]]"].
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/454241.html
上一篇:基于字串匹配合并兩個資料集
下一篇:用數字c#替換字串中的每個出現
