我有一本字典:
mydict={'öö':1,'ää':2}
我已经将它写入pickle文件:
a=codecs.open(r'mydict.pkl', 'wb', 'utf-8')
pickle.dump(mydict, a)
如果我试图加载它:
m=codecs.open(r'mydict.pkl', 'rb', 'utf-8')
mydict = pickle.load(m)
我得到一个错误:
KeyError: u"S'\\xe4\\xe4'\np1\nI2\nsS'\\xf6\\xf6'\np2\nI1\ns."
有什么办法解决这个问题吗?人们非常感激帮助。
我认为问题在于
codecs.open
的使用。pickle是二进制文件而不是文本,codec
用于从某些文本编码到unicode的透明转换。你应该改用open
。pickle是一种二进制格式,在编写之前使用编解码器翻译会破坏它。尝试只写一个文件并将其加载回:
但最有可能的是,您首先要使用Unicode:
老问题但是。。。我也遇到过同样的问题,我不认为额外的磁盘IO是一个好的解决方案。我建议您使用base64编码/解码。
即使是cPickle也可以用同样的方法来加快批量结果。
相关问题 更多 >
编程相关推荐