如何将字符串中的元组转换为元组对象?

时间:2013-05-14 00:29:27

标签: python tuples

在Python 2.7中,我有以下字符串:

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

如何将此字符串转换回元组?我曾尝试使用split几次,但它非常混乱,而是制作一个列表。

期望的输出:

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

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:11)

您应该使用literal_eval模块中的ast方法,您可以阅读有关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/'))

答案 1 :(得分:3)

ast.literal_eval应该做 - 安全

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

有关使用eval的原因的详细信息,请参阅this answer

答案 2 :(得分:0)

使用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