redis py和hgetall为什么键值有一个b“”?

2024-04-19 13:38:55 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是redis的dict返回。为什么是b?我怎样才能摆脱它?你知道吗

data = r_client.hgetall(key)
{b'test1:r': b'2', b'test2:f': b'2'}

print('test1:r' in data)
False

print(b'test1:r' in data)
True

当我从redis获得数据时,我该如何摆脱那个糟糕的b?你知道吗

我是说我必须这样做才能得到我想要的:

new_data = {}
for key,value in data.items():
    new_data[key.decode()] = value.decode()

Tags: keyinredisclientfalsetruenewdata
2条回答

你可以添加参数来摆脱它。你知道吗

client = redis.Redis('localhost', charset="utf-8", decode_responses=True)

您需要解码字符串的字节:

b'test1:r'.decode('utf-8')

解码所有密钥:

data = {b'test1:r': b'2', b'test2:f': b'2'}
data= {key.decode('utf-8'):value for key,value in data.items()}
print('test1:r' in data) # True
print(b'test1:r' in data) # False

相关问题 更多 >