我怎样才能转动这个字符串
"((145541L, u'/.stats/'), (175706L, u'///')"
到python中的json对象,例如
{'145541' : '/.stats/',
'175706' : '///'
}
我一直在尝试 tuple() 和其他人,但确实如此
谢谢
快速解决:
>>> 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
。
你很可能有一个元组的元组,并且想要创建一个字典。为此,请尝试以下操作:
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))