roo*_*oot 8 python unicode dictionary pickle
我有一本字典:
mydict={'öö':1,'ää':2}
Run Code Online (Sandbox Code Playgroud)
我把它写成了一个pickle文件:
a=codecs.open(r'mydict.pkl', 'wb', 'utf-8')
pickle.dump(mydict, a)
Run Code Online (Sandbox Code Playgroud)
如果我尝试加载它:
m=codecs.open(r'mydict.pkl', 'rb', 'utf-8')
mydict = pickle.load(m)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
KeyError: u"S'\\xe4\\xe4'\np1\nI2\nsS'\\xf6\\xf6'\np2\nI1\ns."
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?帮助很大程度上受到了关注.
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}
Run Code Online (Sandbox Code Playgroud)
但最有可能你想首先使用Unicode:
>>> mydict={u'öö':1,u'ää':2}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6785 次 |
| 最近记录: |