[英]How to convert array like data from a string and to a 2d array?
我正在从具有如下结构的xml文件加载数据:
<project name = "xxx">
<Parameter name = "yyy">
<data> <![CDATA[{ { 1, 1, 1, 1}, { 2, 2, 2, 2}, { 3, 3, 3, 3} }]]></data>
</Parameter>
</project>
我能够找到数据并从xml中提取数据,但是它是字符串形式以及所有括号
data = "{ { 1, 1, 1, 1}, { 2, 2, 2, 2}, { 3, 3, 3, 3} }"
我想将其转换为二维数组。 此时,我使用如下代码:
data2d = data.replace('{','[')
data2d = data2d.replace('}',']')
exec('a = np.array('+ data2d +')')
从该代码中,我得到了我想要的:
a = [[1, 1, 1, 1],[2, 2, 2, 2],[3, 3, 3, 3]]
但是我想知道是否有更好的方法可以做到这一点。 我真的不喜欢exec()
方法。 还有其他想法吗?
您可以使用ast.literal_eval
:
from ast import literal_eval
data = "{ { 1, 1, 1, 1}, { 2, 2, 2, 2}, { 3, 3, 3, 3} }"
lst = literal_eval(data.replace("{", "[").replace("}", "]"))
print(lst, type(lst))
# [[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]] <class 'list'>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.