首页 > 解决方案 > 如何转换浮点字符串的一个元素列表,它们之间的间距不均匀

问题描述

例如,我尝试转换它们之间具有均匀间距的浮点字符串

floating_num = ['6.7 6.8 6.9 7.0 7.1']

第一步:使用string方法string.split()

floating_num = floating_num[0].split(' ')

并得到liststring float5 个元素

floating_num = ['6.7', '6.8', '6.9', '7.0', '7.1']

第 2 步:然后将每个元素转换为float使用列表推导

floating_num = [float(x) for x in floating_num]

然后得到一个list带有float5 个浮点类型元素的

floating_num = [6.7, 6.8, 6.9, 7.0, 7.1]

我的问题:

我尝试转换floating_num = ['6.7 6.8 6.9 7.0 7.1'],但在每个浮点字符串之间使用非均匀间距。例如,6.7 和 6.8 之间的间距有 2 个空格,6.8 和 6.9 之间有 1 个空格,6.9 之间有 3 个空格,等等。如何将其转换为listof float?我已经尝试了第 1 步并得到了这个结果

['6.7', '', '6.8', '6.9', '', '', '7.0', '', '7.1'] 

因为我在split()方法中使用的分隔符只有 1 个间距' ',所以我得到了带有值的元素''。当我将其转换为浮点数时,出现错误:

ValueError:无法将字符串转换为浮点数。

字符串方法split()可以适用于此吗?还是有其他方法?

标签: python

解决方案


不带参数使用.split处理多个空格。

x = '6.7  6.8 6.9   7.0  7.1'
[float(y) for y in x.split()]
# returns:
[6.7, 6.8, 6.9, 7.0, 7.1]

推荐阅读