I have a string, something like this: \"[[\'Cheese\', 72], [\'Milk\', 45], [\'Bread\', 22]]\"
.
I want to convert this to a list. I know I can use eval(s
If you insist on doing it this way, you can use the ast.literal_eval function.
>>> import ast
>>> foo = "[['Cheese', 72], ['Milk', 45], ['Bread', 22]]"
>>> ast.literal_eval(foo)
[['Cheese', 72], ['Milk', 45], ['Bread', 22]]
I'm sure others will tell you that you're likely doing something wrong, or to use a library like JSON to transport arbitrary data structures like this one, and I wouldn't disagree.
Here's one way: exec("list = "+foo) This should make a variable 'list' with the list in string converted to a real list. This also works for dictionaries, arrays, bools, etc in strings.
You might consider using the json
module to deserialize and making sure your strings are in json format.
See http://docs.python.org/2/library/json.html for details about using this module.
Try to use the json module:
import json
s = "[['Cheese', 72], ['Milk', 45], ['Bread', 22]]"
s = s.replace("'", '"')
print json.loads(s)