I have a string like
str_sample = "[[1, 2], [2.0, 0.3], ['a', 'b', [None, (1, 3)], {'c': 'd'}]]"
I am currently using:
exec("str2list_sample = "+ str_sample)
Is there any much more cleaner approach of doing this?
Firstly don't name your variable str
as it shadows the built-in.
To solve your problem you can use ast.literal_eval
>>> a = "[[1, 2], [2.0, 0.3], ['a', 'b']]"
>>> import ast
>>> ast.literal_eval(a)
[[1, 2], [2.0, 0.3], ['a', 'b']]
To address your latest edit
>>> str_sample = "[[1, 2], [2.0, 0.3], ['a', 'b', [None, (1, 3)], {'c': 'd'}]]"
>>> ast.literal_eval(str_sample)
[[1, 2], [2.0, 0.3], ['a', 'b', [None, (1, 3)], {'c': 'd'}]]
Use eval
, but this is not a good practice
eval("[[1, 2], [2.0, 0.3], ['a', 'b']]")
[[1, 2], [2.0, 0.3], ['a', 'b']]
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