6

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

我在这里先向您的帮助表示感谢!

4

3 回答 3

16

您应该使用模块中的literal_eval方法,您可以在此处ast阅读更多信息。

>>> 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/'))
于 2013-05-14T00:34:55.623 回答
4

ast.literal_eval应该做的伎俩 - <strong>安全

例如

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

于 2013-05-14T00:35:38.777 回答
0

使用评估:

s="((1, u'Central Plant 1', u'http://egauge.com/'), (2, u'Central Plant 2', u'http://egauge2.com/'))"
p=eval(s)
print p
于 2013-05-14T00:33:05.100 回答