1

我正在从一个看起来像这样的 csv 附加到一个列表

SampleA,Type,3.782*0.0627

然后vals = line.split(',')

所以,我尝试过类似 value = float(str(vals[2]))value = float(vals[2])

但我收到类似的错误ValueError: invalid literal for float(): 3.782*0.0627

所以我想要的,是基本上存储到value = 0.237即分割的结果

TIA

4

3 回答 3

2

你可以先计算浮点数。

floats = vals[2].split('*')
value = float(floats[0]) * float(floats[1])
于 2020-05-31T18:25:59.880 回答
1

您需要3.782*0.0627“手动”执行操作。你可以这样做:

value1, value2 = map(float, vals[2].split("*"))
value = value1 * value2

但是,如果您有可能遇到任何其他操作,vals[2]那么您应该为每个案例实现一个处理逻辑。

此外,如果您正在解析 csv,请考虑使用python 标准 csv 库

于 2020-05-31T18:13:49.043 回答
1

接受的答案不能处理只有一个值的情况,因为我建议(Python 3.8 或更高版本)

from math import prod

value = prod(map(float, vals[2].split("*")))

或类似地

from math import prod

value = prod(float(x) for x in vals[2].split("*"))
于 2020-05-31T18:45:00.690 回答