Как разделить значения и преобразовать их в список с плавающей точкой, если они все заключены в одну кавычку? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть список содержимого:

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

Таким образом, в нем содержится один член с числами.

Я пытался найти разные методы для извлечения чисел в формате с плавающей запятой, например:

Как удалить '\ n' из конца строк в списке?

Удалить '\ n' из каждой строки, хранящейся в списке Python

Как удалить "\ n" из списка списков (python)

Как удалить '\ n' из конца строк в списке?

Но их отличие от моего случая в том, что все мои числа находятся внутри одного '', поэтому, как только я использую

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

тогда

a[0].split()

это дает мне:

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

Я могу удалить \n, но тогда я никак не могу извлечь цифры. Я хотел отделить запятые от цифр, а затем удалить их одну за другой, но в моем случае разделение не работает.

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Как упоминается в комментариях lgwilliams. Вам необходимо указать разделитель в 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 голосов
/ 14 ноября 2018

Один из способов сделать это - разделить запятые:

'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']
0 голосов
/ 14 ноября 2018

Вы можете попытаться использовать регулярное выражение для извлечения значений с плавающей точкой из строки и преобразования в число с плавающей точкой

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

Out:

[0.00244,
 -0.001908302,
 -0.001731396,
 0.002029896,
 0.000424,
 0.000291,
 0.000148]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...