Преобразование строки, представляющей список, в фактический объект списка

У меня есть строка, которая представляет список:

"[22, 33, 36, 41, 46, 49, 56, 72, 85, 92, 95, 98, 107, 118, 120, 123, 124, 126, 127, 130, 149, 157, 161, 171, 174, 177, 187, 195, 225, 302, 316, 359, 360, 363, 396, 479, 486, 491]" 

Я хотел бы превратить эту литровую строку в фактический список. Я предполагаю, что можно повторно вывести числа и зациклиться на них ( append() ), но есть ли более простой способ? Не знаю, как бы это сделать как регулярное выражение.

  • Python вызывает: IOError: На устройстве нет места: '../results/32766.html' на диске с большим количеством места
  • Пример многопроцессорности Python не работает
  • Запись в Python в обработчик StringIO
  • Как перечислить имена пакетов PyPI, соответствующих им в сценарии?
  • Уменьшение размеров матрицы при маскировании
  • «Большие данные» работают с использованием панд
  • Как помещать произвольные виджеты в gtk.Menu?
  • Выходной файл Django Compressor Blank Css
  • 5 Solutions collect form web for “Преобразование строки, представляющей список, в фактический объект списка”

    Используйте ast.literal_eval .

     >>> import ast >>> i = ast.literal_eval('[22, 33, 36, 41, 46, 49, 56]') >>> i[3] 41 

    Еще один способ:

     import json x=json.loads("[22, 33, 36, 41, 46, 49, 56, 72, 85, 92, 95, 98, 107, 118, 120, 123, 124, 126, 127, 130, 149, 157, 161, 171, 174, 177, 187, 195, 225, 302, 316, 359, 360, 363, 396, 479, 486, 491]") 

    Если ваша фактическая строка

     s = "[22, 33, 36, 41, 46, 49, 56, 72, 85, 92, 95, 98, 107, 118, 120, 123, 124, 126, 127, 130, 149, 157, 161, 171, 174, 177, 187, 195, 225, 302, 316, 359, 360, 363, 396, 479, 486, 491]" 

    то это сделает трюк:

     [int(n) for n in s[1:-1].split(', ')] 

    Попробуй это:

     sl = "[22, 33, 36, 41, 46, 49, 56, 72, 85, 92, 95, 98, 107, 118, 120, 123, 124, 126, 127, 130, 149, 157, 161, 171, 174, 177, 187, 195, 225, 302, 316, 359, 360, 363, 396, 479, 486, 491]" sl = sl.lstrip('[') sl = sl.rstrip(']') sl = sl.split(',') 

    Уродливый и хриплый, но это сработает!

    Вы можете использовать встроенный eval http://docs.python.org/library/functions.html#eval

     >>> lst = eval("[22, 33, 36, 41, 46, 49, 56, 72, 85, 92, 95, 98, 107, 118, 120, 123, 124, 126, 127, 130, 149, 157, 161, 171, 174, 177, 187, 195, 225, 302, 316, 359, 360, 363, 396, 479, 486, 491]") >>> type(lst) <type 'list'> >>> lst[0] 22 
    Python - лучший язык программирования в мире.