1

我有一个这样的字符串列表(CD_cent):

2.374 2.559 1.204

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

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

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

4

2 回答 2

12

您需要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(' ')])

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

floats = [float(x) for x in CD_cent.split(' ')]
于 2017-07-12T00:10:27.220 回答
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()]
于 2017-07-12T00:11:18.687 回答