我想转换一个"列表"字符串到一个包含两个浮动项的列表中。不幸的是,列表被导入为一个长字符串。 原文:
a = '[123.34 , -12333]'
这是一个很大的长字符串,其中使用map(float,a)转换为float返回:ValueError: could not convert string to float: [
新:
a = [123.34, -12333]
其中123.34和-12333各自为浮点数
我已经尝试eval(a)
了。这有点奏效,但会使所有负数变为正数。
任何帮助将不胜感激。感谢。
答案 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]