Reputation: 311
I am receving a string through a socket like so
"['[0,0,0]','[0,0,0]']"
I would like to convert it back to a array. I have tried using
received.split(",")
however it splits up the arrays inside the array.
How would I go about converting the string to an array?
Upvotes: 2
Views: 1777
Reputation: 1709
>>> import ast
>>> s = "['[0,0,0]','[0,0,0]']"
>>> s = ast.literal_eval(s)
>>> s
['[0,0,0]', '[0,0,0]']
>>> s = [ast.literal_eval(sub) for sub in s]
>>> s
[[0, 0, 0], [0, 0, 0]]
Using literal_eval
is safer than eval
. From the docs:
31.2. ast — Abstract Syntax Trees¶
ast.literal_eval(node_or_string)
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.
Upvotes: 5