如何转换它们之间不均匀间距的浮点字符串的一个元素列表

时间:2019-04-26 12:02:53

标签: python

例如,我尝试将float字符串转换为间距均匀的

floating_num = ['6.7 6.8 6.9 7.0 7.1']

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

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

并从5个元素中获得list string中的float

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

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

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

然后得到list的{​​{1}}和5个浮点型元素

float

我的问题:

我尝试转换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个空间,依此类推。 如何将其转换为floating_num = ['6.7 6.8 6.9 7.0 7.1']中的list? 我已经在步骤1中进行了尝试,并获得了结果

float

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

  

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

字符串方法''是否适用于此?还是有其他方法?

3 个答案:

答案 0 :(得分:5)

使用不带参数的.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]

答案 1 :(得分:1)

给予

floating_num = ['6.7  6.8 6.9   7.0  7.1']

选项1:使用正则表达式进行分割

import re
temp = re.split('\s+', floating_num[0])
result = [float(x) for x in temp]
print(result)
#[6.7, 6.8, 6.9, 7.0, 7.1]

选项2:不使用正则表达式:仅将非空值转换为浮点数

temp = floating_num[0].split(' ')
result = [float(x) for x in temp if x]
print(result)
#[6.7, 6.8, 6.9, 7.0, 7.1]

答案 2 :(得分:0)

只需对其进行过滤:

>>> s = '6.7  6.8 6.9   7.0  7.1'
>>> [float(x) for x in s.split(" ") if x != ""]
[6.7, 6.8, 6.9, 7.0, 7.1]