当我从python3脚本查询hgetall到redis时,我得到了以下声明的输出.
data = {
b'category': b'0',
b'title': b'1',
b'display': b'1,2',
b'type': b'1',
b'secret': b'this_is_a_salt_key',
b'client': b'5'}
Run Code Online (Sandbox Code Playgroud)
它是dict类型.
当我试图得到"类别"时
>>> data['category']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'category'
Run Code Online (Sandbox Code Playgroud)
读完后我就这样试了
import ast
>>> ast.literal_eval(data)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.4/ast.py", line 84, in literal_eval
return _convert(node_or_string)
File "/usr/lib/python3.4/ast.py", line 83, in _convert
raise ValueError('malformed node or string: ' + repr(node))
ValueError: malformed node or string: {b'category': b'0', b'title': b'1', b'display': b'1,2', b'type': b'1', b'secret': b'this_is_a_salt_key', b'client': b'5'}
Run Code Online (Sandbox Code Playgroud)
也试过用json.dumps.但无法理解真正的问题.
请帮我解析输出并获得所需的结果.
Dan*_*man 10
这不是JSON,因此尝试解析它没有意义.它是一个字典,恰好有字节字符串的键.所以你只需要使用字节字符串来访问这些值:
data[b'category']
Run Code Online (Sandbox Code Playgroud)
您必须b在键值前面添加 ,因为它是字节字符串:
data[b'category']
Run Code Online (Sandbox Code Playgroud)
如果你想将字节字符串转换为普通字符串,你可以这样做:
data = {b'category': b'0', b'title': b'1', b'display': b'1,2', b'type': b'1', b'secret': b'this_is_a_salt_key', b'client': b'5'}
newData = {str(key): str(value) for (key, value) in data.items()}
print newData
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5062 次 |
| 最近记录: |