如何将字符串小数转换为浮点数?

my_list=[['A','B','C','0.0'],['D','E','F','1.2'],['G','H','I','0'],['J','K','L','M']]


我尝试了这些,但它们只能将整数转换为浮点数并将其余的保留为字符串。


[[float(x) if x.isnumeric() else x for x in i] for i in my_list]

for i, sublist in enumerate(my_list):

     for j, x in enumerate(sublist):

            if x.isnumeric():

                my_list[i][j] = float(x)

预期产出


[['A','B','C',0.0],['D','E','F',1.2],['G','H','I',0],['J','K','L','M']]


富国沪深
浏览 107回答 3
3回答

婷婷同学_

如果除了“任何东西可能是或可能不是有效的浮点数”之外没有其他标准,那么就try全部:def try_float(value):    try:        return float(value)    except ValueError:        return valueresult = [[try_float(v) for v in l] for l in my_list]

慕桂英3389331

.isnumeric不返回True表示为字符串的浮点数。对于仅由数字组成而.不是数字的字符串,它返回 true。这就是为什么您的解决方案只转换整数,而不转换浮点数。检查字符串是否为浮点数并因此对其进行转换的最佳选择是尝试float()捕获引发的ValueError并简单地继续。如果您知道嵌套只有一层深,deceze 的解决方案应该会做得很好。如果可能有更多嵌套,您可以尝试递归函数 -def convert_float(l: list):    for i, v in enumerate(l):        if type(v) == list:            convert_float(v)            continue        try:            l[i] = float(v)        except ValueError:            continue

叮当猫咪

您也可以使用regex它来查找。像下面这样的东西:In [105]: import reIn [106]: r = re.compile(r"^\d*[.,]?\d*$")In [107]: [[float(v) if r.match(v) else v for v in l] for l in my_list]Out[107]: [['A', 'B', 'C', 0.0], ['D', 'E', 'F', 1.2], ['G', 'H', 'I', 0.0], ['J', 'K', 'L', 'M']]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python