如何将字符串列表转换为正确的Python类型?

14 投票
7 回答
8118 浏览
提问于 2025-04-15 22:51

给定一个包含Python字符串的列表,我该如何自动将它们转换为正确的类型呢?

比如说,如果我有:

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

我希望这个能被转换成以下的列表:

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

其中第一个元素是字符串,第二个是整数,第三个是浮点数,第四个是整数。

我该怎么做呢?

7 个回答

4

我用 json.loads 方法也做到了这一点。

def f(l):
    for i in l:
        try:
            yield json.loads(i)
        except:
            yield i

测试:

In [40]: l
Out[40]: ['hello', '3', '3.64', '-1']

In [41]: list(f(l))
Out[41]: ['hello', 3, 3.64, -1]
8

不使用评估:

def convert(val):
    constructors = [int, float, str]
    for c in constructors:
        try:
            return c(val)
        except ValueError:
            pass
25

在编程中,有时候我们需要把一些东西放在一起,形成一个整体。这个整体就像一个盒子,里面可以装很多不同的东西。我们可以把这些东西称为“对象”。

对象有自己的特点和行为。特点就像是对象的属性,比如颜色、大小等;而行为则是对象可以执行的动作,比如走、跳等。

在编程里,我们通常会创建一个“类”,这个类就像是一个模板,告诉我们如何制作对象。然后,我们可以根据这个模板来创建多个对象,每个对象都有自己的特点和行为。

这样做的好处是,我们可以更好地组织代码,让它更容易理解和维护。就像把不同的玩具放在不同的盒子里,找起来就方便多了。

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]

撰写回答