3 回答
TA贡献1844条经验 获得超8个赞
如果除了“任何东西可能是或可能不是有效的浮点数”之外没有其他标准,那么就try全部:
def try_float(value):
try:
return float(value)
except ValueError:
return value
result = [[try_float(v) for v in l] for l in my_list]
TA贡献2036条经验 获得超8个赞
.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
TA贡献1776条经验 获得超12个赞
您也可以使用regex它来查找。像下面这样的东西:
In [105]: import re
In [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']]
添加回答
举报