我有一个字典,其中所有元素都是字节。我怎样才能得到字符串的字典?

示例 - 我有一个这样的字典:

{b'mykey': {b'inner_key': b'inner_value'}}

如何将其转换为字符串和值均为字符串的字典?


慕尼黑8549860
浏览 158回答 4
4回答

MMMHUHU

def decode_dict(d, encoding_used = 'utf-8'):    return { k.decode(encoding_used) : (v.decode(encoding_used) if isinstance(v, bytes) else decode_dict(v, encoding_used)) for k, v in d.items() }new_dict = decode_dict({b'mykey': {b'inner_key': b'inner_value'}})print(new_dict)如果您的编码不是 UTF-8,则需要在调用中使用第二个参数。

婷婷同学_

使用解码:b'somestring'.decode('utf-8')

幕布斯6054654

使用像这样的简单字典,{b'inner_key': b'inner_value'}您可以执行以下操作:for k, v in list(d.items()):     d[k.decode('utf8')] = d.pop(k).decode('utf8')这需要扩展到可能存在嵌套字典的更一般情况。但是,它会就地修改字典,如果您不想创建另一个字典,这可能很有用。

沧海一幻觉

我最后做了def _convert_bytes_dict(data):    out = {}    for key, val in data.items():        if isinstance(val, list):            decoded_val = [_convert_bytes_dict(i) for i in val]        elif not hasattr(val, "items") and not hasattr(val, "decode"):            decoded_val = val        elif not hasattr(val, "items"):            decoded_val = val.decode("utf-8")        else:            decoded_val = _convert_bytes_dict(val)        out[key.decode("utf-8")] = decoded_val    return out
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python