我有一个像这样的二维数组格式的字符串:
"[[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]"
我怎样才能让程序将字符串作为这样的实际二维数组读取
[[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]
以便我可以执行矩阵计算?
我尝试删除逗号和括号,然后将字符串数字转换为整数,但这不起作用,因为我需要保持二维数组的形状。在这个例子中,我需要最终的 2D 数组的大小为 [4][4]。
答案 0 :(得分:3)
鉴于 2D 列表字符串恰好是 Python 2D 列表的有效语法,您可以使用 eval()
函数:
output = eval("[[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]")
print(output)
print(output[0])
打印:
[[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]
[1, 0, 0, 0]
答案 1 :(得分:2)
In [4]: import ast
In [5]: array = "[[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]"
In [6]: array = ast.literal_eval(array)
In [7]: array
Out[7]: [[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]
ast.literal_eval(node_or_string)
[Python-doc]安全地计算表达式节点或
包含以下 Python 文字 :: 字符串、字节、
数字、元组、列表、字典、集合、布尔值和无。