将字符串转换为数组python

时间:2013-01-24 01:10:00

标签: python linux

如何转动此字符串

"((145541L, u'/.stats/'), (175706L, u'///')"

到python中的json对象,如

{'145541' : '/.stats/',
 '175706' : '///'
 }

我一直在尝试tuple()和其他人,但它确实

由于

2 个答案:

答案 0 :(得分:7)

快速修复:

>>> import ast
>>> s = "((145541L, u'/.stats/'), (175706L, u'///')"
>>> {str(k): v for (k, v) in ast.literal_eval(s + ')')}
{'175706': u'///', '145541': u'/.stats/'}

但你真的应该试着调查json.loads

答案 1 :(得分:0)

你很可能有一个元组元组,并且想要创建一个字典。为此,请尝试以下操作:

data = ((145541L, u'/.stats/'), (175706L, u'///'))
result = dict(data)

如果您拥有的实际上是一个字符串,请添加初始行:

data = "((145541L, u'/.stats/'), (175706L, u'///'))"
data = eval(data)
result = dict(data)

正如@Volatility所指出的,eval可能很危险,因为它会评估任何代码,而不仅仅是文字。这样,如果您在字符串上收到命令,则有人可以在您的程序上执行命令。

为避免这种情况,您可以改为使用ast.literal_eval

from ast import literal_eval
data = "((145541L, u'/.stats/'), (175706L, u'///'))"
result = dict(literal_eval(data))