8

In Python 2.7, I have the following string:

"((1, u'Central Plant 1', u'http://egauge.com/'),
(2, u'Central Plant 2', u'http://egauge2.com/'))"

How can I convert this string back to tuples? I've tried to use split a few times but it's very messy and makes a list instead.

Desired output:

((1, 'Central Plant 1', 'http://egauge.com/'),
(2, 'Central Plant 2', 'http://egauge2.com/'))

Thanks for the help in advance!

1
  • 1
    How did you get this string in the first place? Are you in control of that part of the process? What problem are you trying to solve? Commented May 14, 2013 at 3:51

3 Answers 3

20

You should use the literal_eval method from the ast module which you can read more about here.

>>> import ast
>>> s = "((1, u'Central Plant 1', u'http://egauge.com/'),(2, u'Central Plant 2', u'http://egauge2.com/'))"
>>> ast.literal_eval(s)
((1, u'Central Plant 1', u'http://egauge.com/'), (2, u'Central Plant 2', u'http://egauge2.com/'))
Sign up to request clarification or add additional context in comments.

Comments

5

ast.literal_eval should do the trick—safely.

E.G.

>>> ast.literal_eval("((1, u'Central Plant 1', u'http://egauge.com/'),
... (2, u'Central Plant 2', u'http://egauge2.com/'))")
((1, u'Central Plant 1', u'http://egauge.com/'), (2, u'Central Plant 2', u'http://egauge2.com/'))

See this answer for more info on why not to use eval.

Comments

0

Using eval:

s="((1, u'Central Plant 1', u'http://egauge.com/'), (2, u'Central Plant 2', u'http://egauge2.com/'))"
p=eval(s)
print p

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.