2013-05-14 77 views
5

Trong Python 2.7, tôi có chuỗi sau:Làm thế nào để chuyển đổi tuple trong chuỗi thành đối tượng tuple?

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

Làm thế nào tôi có thể chuyển đổi chuỗi này trở lại tuples? Tôi đã cố gắng sử dụng split một vài lần nhưng rất lộn xộn và thay vào đó là danh sách.

đầu ra mong muốn:

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

Thanks for the help trước!

+1

Bạn nhận được chuỗi này ở địa điểm đầu tiên như thế nào? Bạn có kiểm soát được phần đó của quy trình không? Bạn đang cố giải quyết vấn đề gì? –

Trả lời

11

Bạn nên sử dụng phương pháp literal_eval từ các module ast mà bạn có thể đọc thêm về 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

Tuyệt vời, hoạt động. Cảm ơn bạn! –

0

Sử dụng 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 nên làm như trick- an toàn.

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

Xem this answer để biết thêm về lý do tại sao không sử dụng eval.

Các vấn đề liên quan