Python 如何对dict中的所有值进行编码?
我试图对我的所有数据进行如下编码:Python 如何对dict中的所有值进行编码?,python,encoding,utf-8,Python,Encoding,Utf 8,我试图对我的所有数据进行如下编码:dict((k.encode('utf-8'),v.encode('utf-8'))for(k,v)in data.items(),但出现了错误:unicodeincoder:'ascii'编解码器无法对位置0-4的字符进行编码:序号不在范围(128)atv 如果我像打印数据[0]['Album'].encode('utf-8')那样直接执行,效果很好 更新: 以下是dict中的一项(数据[0]): 对于我来说,不需要对键进行编码就可以工作(对于键,编码可以工作
dict((k.encode('utf-8'),v.encode('utf-8'))for(k,v)in data.items()
,但出现了错误:unicodeincoder:'ascii'编解码器无法对位置0-4的字符进行编码:序号不在范围(128)
atv
如果我像打印数据[0]['Album'].encode('utf-8')
那样直接执行,效果很好
更新:
以下是dict中的一项(数据[0]):
对于我来说,不需要对键进行编码就可以工作(对于键,编码可以工作,但没有意义-所有键实际上都只是ascii字符串),并且字符串的检查值:
{k:v.encode('utf-8') if isinstance(v, basestring) else v for k,v in d.items()}
{'Album':'\xd0\x9c\xd0\xb5\xd1\x82\xd1\x80\xd0\xbe 2033','MIME'
类型“:”application/epub+zip“,”种类“:”电子书“,”有插图“:True,
“名称”:“\xd0\x9c\xd0\xb5\xd1\x82\xd1\x80\xd0\xbe 2033”,“扩展名”:
“epub”,“艺术家”:
'\xd0\x94\xd0\xbc\xd0\xb8\xd1\x82\xd1\x80\xd0\xb8\xd0\xb9
\xd0\x90\xd0\xbb\xd0\xb5\xd0\xba\xd1\x81\xd0\xb5\xd0\xb5\xb2\xd0\xb8\xd1\x87
\xd0\x93\xd0\xbb\xd1\x83\xd1\x85\xd0\xbe\xd0\xb2\xd1\x81\xd0\xba\xd0\xb8\xd0\xb9',
“唯一ID”:“65B713FCA7956AA”,“发布者唯一ID”:
'urn:uuid:f29c974b-d68c-412c-964f-652e5a24a7c4','Package Hash':
'DB3AC6E6F43ED7477CE1B998C410FD5F','Path':'018D714FCD176F02.epub',
“持久ID”:“018D714FCD176F02”,“受保护”:False}
你能给我们看一下
数据的样本吗?
?请显示实际的代码和你的数据以及你得到的回溯。gm,但奇怪的是,为什么它返回\xd0\x9c\xd0\xb5\xd1\x82\xd1\x80\xd0\xbe 2033
而不是真实的书名?@NoNameZ在编码之前是unicode文本,编码之后值变成字节…>>打印u'\u041c\u0435\u0442\u0440\u043e 2033'Мццö2033
{k:v.encode('utf-8') if isinstance(v, basestring) else v for k,v in d.items()}