Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert string representation of list into list

list_string = "[1,3,4,6]"

I tried list_string[1:-1] but it is giving 1,3,4,6. I also tried list_string.split(',') but again the brackets will be appended to first and last element i.e '[1' , '3' , '4' , '6]'

I can iterate over all the items and remove brackets from 1st and last element. But what is the best and simple way to do this?

like image 843
Pramod Patil Avatar asked Oct 24 '25 19:10

Pramod Patil


1 Answers

Assuming your string is a simple list/dict/combination of lists and dicts, you can use one of the two packages mentioned below, listed in order of preference.

json

>>> import json
>>> json.loads('[1, 2, 3]')
[1, 2, 3]

This is definitely the preferred method if you are parsing raw json strings.


ast.literal_eval

>>> import ast
>>> ast.literal_eval('[1, 2, 3]')
[1, 2, 3]

ast.literal_eval will 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, None, bytes and sets.

Also json.loads is significantly faster than ast.literal_eval. Use this ONLY IF you cannot use the json module first.


yaml

In some cases, you can also use the pyYAML library (you'll need to use PyPi to install it first).

>>> import yaml
>>> yaml.safe_load('[1, 2, 3]')
[1, 2, 3] 
like image 77
cs95 Avatar answered Oct 27 '25 09:10

cs95