将包含混合类型字符串的列表转换为对应的内在类型

3

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

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

我希望将这个转换成像这样的形式:
[True, 2.7, 3, 'Ninety']

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

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']

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']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接