例如,我尝试将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:无法将字符串转换为浮点数。
字符串方法''
是否适用于此?还是有其他方法?
答案 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]