Python 如果这些值都在一个单引号中,如何拆分这些值并转换为列表中的浮点值?

Python 如果这些值都在一个单引号中,如何拆分这些值并转换为列表中的浮点值?,python,string,text,Python,String,Text,我有一份清单,内容如下: a=['0.00244,-0.001908302,-0.001731396,0.002029896,0.000424,0.000291,0.000148\n'] 所以它包含一个有数字的成员 我尝试搜索不同的方法来提取浮点格式的数字,如下所示: 但它们与我的情况的不同之处在于,我所有的数字都在一个'内,所以一旦我使用 a=[a[0].strip('\n')] 然后 a[0].split() 这给了我: ['0.00244,-0.001908302,-0.0

我有一份清单,内容如下:

a=['0.00244,-0.001908302,-0.001731396,0.002029896,0.000424,0.000291,0.000148\n']
所以它包含一个有数字的成员

我尝试搜索不同的方法来提取浮点格式的数字,如下所示:

但它们与我的情况的不同之处在于,我所有的数字都在一个
'
内,所以一旦我使用

 a=[a[0].strip('\n')]
然后

a[0].split()
这给了我:

['0.00244,-0.001908302,-0.001731396,0.002029896,0.000424,0.000291,0.000148']

我可以删除
\n
,但是我无法以任何方式提取数字。我想把逗号从数字中分离出来,然后一个接一个地删除它们,但在我的例子中,分割似乎不起作用。

您可以尝试使用正则表达式从字符串中提取浮点值并转换为浮点值

list(map(float,re.findall(r'(\-?\d+.\d+)',a[0])))
输出:


正如在评论中提到的那样。您需要在
split
中指定分隔符,否则它将默认为
'
。在本例中,您将使用
split(',')
。然后,您需要将这些数字转换为
float
,如mhawke所述,这将删除
\n

考虑到所有这些,您可以执行列表理解

In [17]: a = ['0.00244,-0.001908302,-0.001731396,0.002029896,0.000424,0.000291,0.000148\n']

In [18]: numbers = [float(n) for n in a[0].split(',')]

In [19]: numbers
Out[19]:
[0.00244,
 -0.001908302,
 -0.001731396,
 0.002029896,
 0.000424,
 0.000291,
 0.000148]
您也可以使用
map

In [22]: list(map(float, a[0].split(',')))
Out[22]:
[0.00244,
 -0.001908302,
 -0.001731396,
 0.002029896,
 0.000424,
 0.000291,
 0.000148]

一种方法是在逗号上拆分:

'0.00244,-0.001908302,-0.001731396,0.002029896,0.000424,0.000291,0.000148'.split(',')
将导致:

['0.00244', '-0.001908302', '-0.001731396', '0.002029896', '0.000424', '0.000291', '0.000148']

可以指定分隔符“,”<代码>a[0]。拆分(“,”)使用a=a[0]。拆分(“,”)而不是[0]。拆分()将为您提供所需的正确输出次要问题:不需要剥离新行,
float()
将忽略它。谢谢,它有效,但在所有值均为0时无效
['0.00244', '-0.001908302', '-0.001731396', '0.002029896', '0.000424', '0.000291', '0.000148']