将具有混合固有类型的字符串列表转换为固有类型

时间:2017-02-02 20:27:55

标签: python list types

所以我有一个字符串列表,每个字符串都有固有的类型。

mixedbag = ['True', '2.7', '3', 'Ninety']

我想将其转换为如下所示:

[True, 2.7, 3, 'Ninety']

我想到的是创建一个大的try / except链来评估列表中的每个项目,但这并不像处理这个问题的pythonic方法。

2 个答案:

答案 0 :(得分:5)

您可以在try-except块中使用ast.literal_eval

from ast import literal_eval
def unmix(ele):
    try:
        ele = literal_eval(ele)
    except ValueError:
        pass
    return ele

<强>演示

>>> list(map(unmix, mixedbag))
[True, 2.7, 3, 'Ninety']

答案 1 :(得分:0)

使用ast.literal_eval函数的解决方案:

import ast
mixedbag = ['True', '2.7', '3', 'Ninety']

evaled = []
for i in mixedbag:
    try:
        evaled.append(ast.literal_eval(i))
    except ValueError:
        evaled.append(i)

print(evaled)

输出:

[True, 2.7, 3, 'Ninety']