python将列表字符串转换为列表列表

时间:2016-04-18 21:23:13

标签: python list replace split

我正在寻找一种将字符串转换为列表列表的优雅方法。我正在从文本文件中读取它们,因此无法改变我收到字符串的格式。这里作为示例字符串:

a = "[[1,2,3],[4,5,6],[7,8,9]]"

我想把它转换成这样的东西:

c = [[1,2,3],[4,5,6],[7,8,9]]

我能想到的唯一方法是使用.split()和.replace()

进行几个步骤。
b = a.split('],[')
for i in range(len(b)):
    b[i] = b[i].replace('[','')
    b[i] = b[i].replace(']','')

b=[[x] for x in b]
b = [float(x[0].split(',')) for x in b]

c=[]
for l in b:
    n=[]
    for x in l:
        n.append(float(x))
    c.append(n)
虽然这有效,但它令人厌恶和笨拙。如果有人知道这样做的优雅方式,请告诉我。非常感谢

1 个答案:

答案 0 :(得分:5)

>>> import json
>>> json.loads("[[1,2,3],[4,5,6],[7,8,9]]")
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

way很容易:)

>>> a = "[[1,2,3],[4,5,6],[7,8,9]]"
>>> import ast
>>> m=ast.literal_eval(a)
>>> m
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

这也有效