如何准备一个包含整数,浮点数和字符串组合的列表?

eve*_*007 2 python regex string lambda list

说我有数据

data = 'A|B|2|D|0.3|5|kg|1.69|m'
Run Code Online (Sandbox Code Playgroud)

我想使用split('|')将其转换为列表,但我得到列表,其中所有值都转换为字符串.我没有在SE上看到任何类似的问题.

我怎样才能得到类似的东西:

data_list = ['A','B',2,'D',0.3,5,'kg',1.69,'m']
Run Code Online (Sandbox Code Playgroud)

数据类型的位置(int,str或float).

我不想要一个非常冗长的功能,但最简单和最简单的方法,lambda可能(我正在尝试但到目前为止没有成功)?,否则别的东西也很好.

有任何想法吗.

发布编辑:

我尝试以下列方式使用lambda:

da_list02 = map(lambda x: float(x) if type(float(x)) is float else str(x), da_list)
Run Code Online (Sandbox Code Playgroud)

但是,我得到了ValueError.ValueError:无法将字符串转换为float:A

不应该覆盖else部分lambda function吗?怎么了lambda function

TsR*_*per 5

你可以使用嵌套tryexcept

def convert(value):
    try:
        return int(value)
    except ValueError:
        try:
            return float(value)
        except ValueError:
            return value

data = 'A|B|2|D|0.3|5|kg|1.69|m'
data_list = [convert(value) for value in data.split('|')]
print(data_list)
Run Code Online (Sandbox Code Playgroud)