将字符串转换为多个浮点数

时间:2017-10-27 18:21:39

标签: python string

我想转换一个"列表"字符串到一个包含两个浮动项的列表中。不幸的是,列表被导入为一个长字符串。 原文:

a = '[123.34 , -12333]'

这是一个很大的长字符串,其中使用map(float,a)转换为float返回:ValueError: could not convert string to float: [

新:

a = [123.34, -12333]

其中123.34和-12333各自为浮点数

我已经尝试eval(a)了。这有点奏效,但会使所有负数变为正数。

任何帮助将不胜感激。感谢。

3 个答案:

答案 0 :(得分:3)

您需要先将字符串转换为列表

a = '[123.34 , -12333]'
res = map(float, a[1:-1].split(','))

答案 1 :(得分:2)

除了现有答案之外,由于你还有一个字符串形式的python列表,你也可以使用ast.literal_eval

import ast
f1, f2 = ast.literal_eval(a)

<强>输出

>>> f1, f2 = ast.literal_eval(a)
>>> f1
123.34
>>> f2
-12333

literal_eval用于安全评估表达式 Unicode Latin-1 编码的字符串一个Python字面值。

答案 2 :(得分:0)

使用列表推导

a = '[123.34 , -12333]'
string_list = a[1:-1].split(',')
res = [float(entry) for entry in string_list]