2013-05-14 10 views
5

In Python 2.7, ich habe die folgende Zeichenfolge:Wie Tupel in Zeichenfolge in Tupel-Objekt konvertieren?

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

Wie kann ich diese Zeichenfolge wieder in Tupeln konvertieren? Ich habe versucht, split ein paar Mal zu verwenden, aber es ist sehr chaotisch und macht stattdessen eine Liste.

gewünschte Ausgabe:

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

Danke für die Hilfe im Voraus!

+1

Wie hast du diese Saite überhaupt bekommen? Haben Sie die Kontrolle über diesen Teil des Prozesses? Welches Problem versuchen Sie zu lösen? –

Antwort

11

sollten Sie verwenden die literal_eval Methode aus dem ast-Modul, das Sie mehr über here lesen kann.

>>> 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/')) 
+0

Ehrfürchtig, das funktioniert. Vielen Dank! –

0

Mit 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 
3

ast.literal_eval tun sollten, die Trick- sicher.

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/')) 

Siehe this answer für weitere Informationen darüber, warum nichteval zu verwenden.