我有一个字符串列表,其中字符串有列表。我想返回一个列表列表。
这是我可能要开始的内容:
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']]
答案 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']]