简体   繁体   中英

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 ie '[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?

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, 3, 4, 6] 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM