如何将类似数据的数组从字符串转换为二维数组?

时间:2019-04-30 13:42:00

标签: python arrays xml string

我正在从具有以下结构的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]] 方法。还有其他想法吗?

1 个答案:

答案 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'>