我有一本字典:

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."

任何想法如何解决这个问题?帮助非常有用。

最佳答案

pickle是一种二进制格式,在编写之前使用编解码器翻译会破坏它。尝试仅写入文件并将其加载回:

>>> mydict={'öö':1,'ää':2}
>>> mydict
{'\xc3\xb6\xc3\xb6': 1, '\xc3\xa4\xc3\xa4': 2}
>>> pickle.dump(mydict, open('/tmp/test.pkl', 'wb'))
>>> pickle.load(open('/tmp/test.pkl', 'rb'))
{'\xc3\xb6\xc3\xb6': 1, '\xc3\xa4\xc3\xa4': 2}

但是最有可能您首先要使用Unicode:
>>> mydict={u'öö':1,u'ää':2}

10-08 12:47