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']