将str列表的组合列表转换为python中的列表

问题描述 投票:0回答:2

我有一个如下所示的字符串列表,我想将其转换为以下内容;你能帮我吗;

这是我的清单:

IN = ['7','8',"['#15140C', '#977E4F']"]

这是我想要的输出。

OUTput = [7,8,['#15140C', '#977E4F']]

我尝试使用 [float(i) for I in range(Len(list))].

python
2个回答
2
投票

您可以使用

ast.literal_eval
将这些字符串评估为文字:

In [1]: from ast import literal_eval

In [2]: IN = ['7','8',"['#15140C', '#977E4F']"]

In [3]: [literal_eval(x) for x in IN]
Out[3]: [7, 8, ['#15140C', '#977E4F']]

1
投票

@ddejohn的回答依赖于可信的输入,但情况并非总是如此

^U
.

正如他们纠正我的那样,

ast.literal_eval()
eval()
安全得多,几乎不比 JSON 解析安全。不过,
json.loads()
原来要快得多

所以这是一个 JSON 解决方案:

>>> import json
>>> IN = ['7','8',"['#15140C', '#977E4F']"]
>>> [json.loads(s.replace("'", '"')) for s in IN]
[7, 8, ['#15140C', '#977E4F']]

(由于 JSON 对字符串使用双引号,我们必须在反序列化之前替换单引号)。

© www.soinside.com 2019 - 2024. All rights reserved.