2013-05-14 14 views
5

W Pythonie 2.7, mam następujący ciąg:Jak przekonwertować tupię w łańcuchu na obiekt krotki?

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

jaki sposób można przekonwertować ten ciąg z powrotem do krotek? Próbowałem kilka razy użyć split, ale jest bardzo brudny i zamiast tego tworzy listę.

Pożądany wyjściowa:

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

Dzięki za pomoc z góry!

+1

W jaki sposób otrzymałeś ten ciąg w pierwszej kolejności? Czy kontrolujesz tę część procesu? Jaki problem próbujesz rozwiązać? –

Odpowiedz

11

należy użyć metody z modułu astliteral_eval które można przeczytać więcej o 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/')) 
+0

Niesamowite, to działa. Dziękuję Ci! –

0

Korzystanie 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 powinien wykonać trick- bezpiecznie.

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

Zobacz this answer uzyskać więcej informacji na temat dlaczego nie używać eval.

Powiązane problemy