How to convert string representation of python list to list python

This tutorial is written for Python 3, but it also works for Python 2

Assume you have a string representation of list like this:

s = '["hello", "world", 1, 2, 3]'

And you to convert s string to Python list like this:

s_list = ["hello", "world", 1, 2, 3]

There are some solutions to do that.

Using literal_eval function from ast module. #

>>> import ast
>>> s = '["hello", "world", 1, 2, 3]'
>>> s_list = ast.literal_eval(s)
>>> s
["hello", "world", 1, 2, 3]

ast.literal_eval(node_or_string) safely evaluate an expression node or a string containing a Python literal or container display. The string or node provided may only consist of the following Python literal structures: strings, bytes, numbers, tuples, lists, dicts, sets, booleans, and None. That means you can also use ast.literal_eval() to convert a string representation of tuple, dict, set to Python tuple, dict, set

Using json module #

You can also use json module to achieve the same result. json module a is a better solution whenever there is a stringified list of dictionaries. The json.loads(s) function can be used to convert it to a list.

>>> import json
>>> s = '["hello","world","1", "2", "3"]'
>>> json.loads(s)
["hello","world","1", "2", "3"]


>>> s = '[ "hello","world","1", "2", "3", {"id": "45"}]'
>>> json.loads(s)
["hello","world","1", "2", "3", {"id": "45"}]