【发布时间】:2023-03-08 01:20:01
【问题描述】:
我正在尝试转换:
data = 'A|B|2|D|0.3|5|kg|1.69|m'
to list
['A','B',2,'D',0.3,5,'kg',1.69,'m']
# where every element is the type it should be (not all are strings)
我试过了:
data_list = da.split('|')
print(da_list)
['A', 'B', '2', 'D', '0.3', '5', 'kg', '1.69', 'm'] # every element is string
#Then
data_list02 = map(lambda x: (int(x) or float(x)) if x.isdigit() else str(x), data_list)
print (data_list02)
['A', 'B', 2, 'D', '0.3', 5, 'kg', '1.69', 'm'] # float are retained as str
我尝试的 lambda 解决方案有什么问题?我不想写另一个def function
【问题讨论】:
-
它应该是的类型听起来不太好。而
0.3不是数字 -
对于初学者,
'0.3'.isdigit() == False,因此不会发生float转换... -
嗯。这很有启发性。我该如何解决这个问题?有什么想法吗?
-
你可以尝试使用
ast.literal_eval -
@everestial007,科学计数法中的数字怎么样,比如
1.00e-05?应该如何治疗?
标签: python list lambda type-conversion list-comprehension