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

У меня есть этот список:

s = '[ 0.00889175 -0.04808848  0.06218296 0.06312469 -0.00700571\n -0.08287739]'

он содержит символ '\n', я хочу преобразовать его в список float, например:

l = [0.00889175, -0.04808848, 0.06218296, 0.06312469, -0.00700571, -0.08287739]

Iпопробовал этот код, который близок к тому, что я хочу:

l = [x.replace('\n','').strip(' []') for x in s.split(',')]

, но он все еще содержит кавычки, которые мне не удалось удалить (я пытался str.replace("'",""), но он не работал), эточто я получаю:

['0.00889175 -0.04808848  0.06218296 0.06312469 -0.00700571 -0.08287739']

Ответы [ 2 ]

6 голосов
/ 06 ноября 2019

Вы были довольно близко. Это будет работать:

s = '[ 0.00889175 -0.04808848  0.06218296 0.06312469 -0.00700571\n -0.08287739]'

l = [float(n) for n in s.strip("[]").split()]

print(l)

Вывод:

[0.00889175, -0.04808848, 0.06218296, 0.06312469, -0.00700571, -0.08287739]
1 голос
/ 06 ноября 2019

Прежде всего необходимо очистить, что если вы сохраняете str, то будут кавычки, если вы не распечатаете каждый элемент вашего str, разделив его.

Вот мое решение вашей проблемы:

s='[ 0.00889175 -0.04808848  0.06218296 0.06312469 -0.00700571\n -0.08287739]'

#removing newline \n
new_str = s.replace('\n', '')

#stripping the brackets and extra space
new_str = new_str.strip(' []')

#splitting elements into a list
list_of_floats = new_str.split()

#typecasting from str to float
for _i, element in enumerate(list_of_floats):
    list_of_floats[_i] = float(element)

print(list_of_floats)

#output
#[0.00889175, -0.04808848, 0.06218296, 0.06312469, -0.00700571, -0.08287739]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...