我有一个如下所示的字符串列表,我想将其转换为以下内容;你能帮我吗;
这是我的清单:
IN = ['7','8',"['#15140C', '#977E4F']"]
这是我想要的输出。
OUTput = [7,8,['#15140C', '#977E4F']]
我尝试使用 [float(i) for I in range(Len(list))].
您可以使用
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']]
@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 对字符串使用双引号,我们必须在反序列化之前替换单引号)。