我正在从具有以下结构的xml文件中加载数据:
keys
我能够找到数据并从xml中提取数据,但是它是字符串形式以及所有括号
<project name = "xxx">
<Parameter name = "yyy">
<data> <![CDATA[{ { 1, 1, 1, 1}, { 2, 2, 2, 2}, { 3, 3, 3, 3} }]]></data>
</Parameter>
</project>
我想将其转换为2D数字数组。 在这一点上,我使用如下代码:
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]]
方法。还有其他想法吗?
答案 0 :(得分:2)
您可以使用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'>