2

I'm confronted with an "eval" problem and I would like your advice, I know eval is wrong and I wish to avoid it but I don't know how...

I have some python objects stored in a database, they are stored as strings and I transform them into actual objects with eval. As an example, my objects could be some simple strings like "[2,1,3,4]" or "[[None,None],None]" -- they correspond to different types of object, they don't follow a common pattern. I have to store them as human-readable objects as they are now.

My problem is how to avoid eval in this case ? I don't want to write a parser for each object.

If I do have to use eval, how do I clean up these strings so that they don't do anything nasty ?

1
  • 2
    Where did these strings come from? Have you considered creating them using pickle or json? Commented Mar 1, 2013 at 14:23

1 Answer 1

4

Use ast.literal_eval:

In [9]: import ast
In [10]: ast.literal_eval("[2,1,3,4]")
Out[10]: [2, 1, 3, 4]
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.