Неверный литерал для float():['1' ошибка в Python

Код

    for i in range(num):
           # for j in range(4):
              lines = outf1.readline()
              brr[i]= list(map(float, lines.split()))

Это мой входной набор данных

['1', '1.52101', '13.64', '4.49', '1.1', '71.78', '0.06', '8.75', '0', '0', '1']
['2', '1.51761', '13.89', '3.6', '1.36', '72.73', '0.48', '7.83', '0', '0', '1']
['3', '1.51618', '13.53', '3.55', '1.54', '72.99', '0.39', '7.78', '0', '0', '1']

Я работаю с алгоритмом SOM. У меня есть файл, содержащий значения с плавающей запятой, имеющие 4 или 5 десятичных значений. Мне нужно получить эти значения и сохранить в массиве.

2 ответа

ast.literal_eval() должен сделать трюк:

In [12]: line = "['1', '1.52101', '13.64', '4.49', '1.1', '71.78', '0.06', '8.75', '0', '0', '1']"

In [13]: map(float, ast.literal_eval(line))
Out[13]: [1.0, 1.52101, 13.64, 4.49, 1.1, 71.78, 0.06, 8.75, 0.0, 0.0, 1.0]

Вы, кажется, кормите split строка, которая начинается с ['1', так что, конечно, квадратная скобка будет проблемой.

Быстрое решение состоит в том, чтобы просто strip каждую строку (чтобы убедиться, что нет пробелов), затем удалите первый и последний символ, чтобы избавиться от скобок.

Другие вопросы по тегам