我用hget从redis获得数据。

data = ss.hget("users", "inmove");

数据类型为str。
type(data):
"{u'free_tickets': 2, u'payment_tickets': 1200, u'last': 1420560000, u'user_id': u'inmove'}"

如果我使用json.loads(data),则错误是
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/usr/lib64/python2.6/json/__init__.py", line 307, in loads
        return _default_decoder.decode(s)
    File "/usr/lib64/python2.6/json/decoder.py", line 319, in decode
        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    File "/usr/lib64/python2.6/json/decoder.py", line 336, in raw_decode
        obj, end = self._scanner.iterscan(s, **kw).next()
    File "/usr/lib64/python2.6/json/scanner.py", line 55, in iterscan
        rval, next_pos = action(m, context)
    File "/usr/lib64/python2.6/json/decoder.py", line 171, in JSONObject
        raise ValueError(errmsg("Expecting property name", s, end))
    ValueError: Expecting property name: line 1 column 1 (char 1)

最佳答案

使用ast.literal_eval,您的字符串数据不是json,而是python字典的字符串表示形式。

>>> my_str = "{u'free_tickets': 2, u'payment_tickets': 1200, u'last': 1420560000, u'user_id': u'inmove'}"
>>> from ast import literal_eval
>>> my_dict = literal_eval(my_str)
>>> my_dict.keys()
[u'last', u'user_id', u'free_tickets', u'payment_tickets']

关于python - python redis hget dict字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27795108/

10-14 12:09
查看更多