ValueError:无法将字符串转换为float:'。'

时间:2017-07-12 00:06:22

标签: python floating-point string-conversion valueerror

我有一个字符串列表(CD_cent),如下所示:

2.374 2.559 1.204

我希望将这些数字乘以浮点数。 为此,我尝试将字符串列表转换为浮点列表,例如:

CD_cent2=[float(x) for x in CD_cent]

但我总是得到错误:ValueError: could not convert string to float: '.'。我想这意味着,它不能将点转换为浮点数(?!)但是我怎么能解决这个问题呢?为什么它不识别点?

2 个答案:

答案 0 :(得分:8)

你需要split每个字符串,因为字符串有多个值:

your_str = "2.374 2.559 1.204"

floats = [float(x) for x in your_str.split(' ')]

有了一个列表,你可以这样做:

li = [...]
floats = []

for s in li:
    floats.extend([float(x) for x in s.split(' ')])

在您确切的情况下,您只有一个字符串CD_cent = 2.374 2.559 1.204,因此您可以:

floats = [float(x) for x in CD_cent.split(' ')]

答案 1 :(得分:0)

当我使用提供的数据运行你的行时,一切正常,并且所有字符串都转换为浮点数而没有错误。该错误表明CD_cent中的某个地方存在一个真正无法转换为浮动的DOT .

试图解决这个问题:

CD_cent2=[float(x) for x in CD_cent if x != '.']

如果由于其他字符串不起作用,则必须try...except这样:

CD_cent2 = []
for x in CD_cent:
    try:
        CD_cent2.append(float(x))
    except ValueError:
        pass

所有这一切都是因为我认为CD_cent不仅仅是'2.374 2.559 1.204'这样的长字符串,而是[2.374,2.559,1.204]之类的列表。如果不是这种情况,那么split就像这样

CD_cent2=[float(x) for x in CD_cent.split()]