从其中包含列表的字符串列表返回列表列表

时间:2019-06-08 20:57:15

标签: python python-3.x

我有一个字符串列表,其中字符串有列表。我想返回一个列表列表。

这是我可能要开始的内容:

old_list = ['[1,2,m]','[4.1,3.5,5]','[x,y,z]', '["t","u","v"]']

这就是我想要的:

new_list = [[1,2,'m'],[4.1,3.5,5],['x','y','z'],['t','u','v']]

1 个答案:

答案 0 :(得分:4)

可以这么说,就像您必须自己制造锤子的情况。在可能的地方使用literal_eval的组合,然后在不可能的地方构建自定义解析器。您可能需要根据需要添加更多案例。

from ast import literal_eval

old_list = ['[1,2,m]','[4.1,3.5,5]','[x,y,z]', '["t","u","v"]']

def hierarchical_convert(s):
    try:
        return int(s)
    except ValueError:
        try:
            return float(s)
        except ValueError:
            return(s)

new_lst = []
for s in old_list:
    try:
        out = literal_eval(s)
    except ValueError: #need to split on comma ourselves, and invoke custom parsing
        out = [hierarchical_convert(item) for item in s[1:-1].split(',')]
    new_lst.append(out)


print(new_lst)
#Output
[[1, 2, 'm'], [4.1, 3.5, 5], ['x', 'y', 'z'], ['t', 'u', 'v']]