将python字符串列表转换为其类型

11 python numpy scipy

给定一个python字符串列表,如何自动将它们转换为正确的类型?意思是,如果我有:

["hello", "3", "3.64", "-1"]
Run Code Online (Sandbox Code Playgroud)

我希望将其转换为列表

["hello", 3, 3.64, -1]  
Run Code Online (Sandbox Code Playgroud)

第一个元素是stirng,第二个是int,第三个是float,第四个是int.

我怎样才能做到这一点?谢谢.

Ign*_*ams 23

import ast

L = ["hello", "3", "3.64", "-1"]

def tryeval(val):
  try:
    val = ast.literal_eval(val)
  except ValueError:
    pass
  return val

print [tryeval(x) for x in L]
Run Code Online (Sandbox Code Playgroud)

  • 诚实地说,这是一个比我更好的解决方案. (7认同)
  • 如果对Python编译器足够好,那么对用户也足够。 (3认同)

Rya*_*yan 8

不使用评估:

def convert(val):
    constructors = [int, float, str]
    for c in constructors:
        try:
            return c(val)
        except ValueError:
            pass
Run Code Online (Sandbox Code Playgroud)