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?
你可以使用嵌套try和except
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)