I have a string that looks identical to a list, let's say:
fruits = "['apple', 'orange', 'banana']"
What would be the way to convert that to a list object?
Strings can be converted to lists using list() .
How to Convert a String to a List of Words. Another way to convert a string to a list is by using the split() Python method. The split() method splits a string into a list, where each list item is each word that makes up the string. Each word will be an individual list item.
>>> fruits = "['apple', 'orange', 'banana']" >>> import ast >>> fruits = ast.literal_eval(fruits) >>> fruits ['apple', 'orange', 'banana'] >>> fruits[1] 'orange'
As pointed out in the comments ast.literal_eval is safe. From the docs:
Safely evaluate an expression node or a string containing a Python expression. The string or node provided may only consist of the following Python literal structures: strings, numbers, tuples, lists, dicts, booleans, and None.
This can be used for safely evaluating strings containing Python expressions from untrusted sources without the need to parse the values oneself.
A simple call to eval()
will do:
fruits = eval("['apple', 'orange', 'banana']") fruits > ['apple', 'orange', 'banana']
Or as explained in this article, the same can be accomplished a bit more safely (meaning: without risking unintended side-effects or malicious code injections) like this:
fruits = eval("['apple', 'orange', 'banana']", {'__builtins__':None}, {})
This solution has the advantage of not depending on additional modules.
I think this is what ast.literal_eval is for.
( http://docs.python.org/library/ast.html#ast.literal_eval )
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With