1

我怎样才能转动这个字符串

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

到python中的json对象,例如

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

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

谢谢

4

2 回答 2

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

于 2013-01-24T01:15:42.807 回答
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))
于 2013-01-24T01:13:18.503 回答