Python错误:无法将字符串转换为浮点

Python错误:无法将字符串转换为浮点,python,string,floating-point,text-files,Python,String,Floating Point,Text Files,我有一些Python代码可以从文本文件中提取字符串: [2.467188005806714e-05, 0.18664554919828535, 0.5026880460053854, ....] Python代码: v = string[string.index('['):].split(',') for elem in v: new_list.append(float(elem)) 这会产生一个错误: ValueError: could not convert string to

我有一些Python代码可以从文本文件中提取字符串:

[2.467188005806714e-05, 0.18664554919828535, 0.5026880460053854, ....]
Python代码:

v = string[string.index('['):].split(',')
for elem in v:
    new_list.append(float(elem))
这会产生一个错误:

ValueError: could not convert string to float: [2.974717463860223e-06

为什么不能将
[2.974717463860223e-06
转换为浮点?

在捕获第一个括号时,将
string.index(“[”
更改为
string.index(“[”+1

v = string[string.index('[') + 1:].split(',')

index()
返回给定字符的索引,因此
'['
包含在
[:]

返回的序列中,您的“float”前面仍然有
[
,这会阻止解析

为什么不为此使用合适的模块?例如:

>>> a = "[2.467188005806714e-05, 0.18664554919828535, 0.5026880460053854]"
>>> import json
>>> b = json.loads(a)
>>> b
[2.467188005806714e-05, 0.18664554919828535, 0.5026880460053854]


您可以执行以下操作,将从文件中读取的字符串转换为浮点列表

>>> instr="[2.467188005806714e-05, 0.18664554919828535, 0.5026880460053854]"
>>> [float(e) for e in instr.strip("[] \n").split(",")]
[2.467188005806714e-05, 0.18664554919828535, 0.5026880460053854]

代码失败的原因是,您没有从字符串中剥离“[”。

这将为您提供一个浮动列表,而不需要额外的导入等

s = '[2.467188005806714e-05, 0.18664554919828535, 0.5026880460053854]'
s = s[1:-1]
float_list = [float(n) for n in s.split(',')]

[2.467188005806714e-05, 0.18664554919828535, 0.5026880460053854]

你看到
[
在错误消息中?如果
json.loads
ast.literal\u eval
不存在,这将是完成任务的最佳方式。@Akavall
eval
不安全,因为它会计算任意代码。
literal\u eval
只计算某些数据结构代码,例如列表、dicts、bools和
N一个
@AaronDufour,我明白了。谢谢。
[2.467188005806714e-05, 0.18664554919828535, 0.5026880460053854]