Проблемы с засолкой и кодировкой - PullRequest
3 голосов
/ 16 февраля 2011

Я работаю с большим набором текстовых файлов.Многие из них написаны в разных кодировках.Я создаю список объектов, который содержит некоторые из подстрок из этих текстовых файлов.Я занимаюсь проблемами кодирования при открытии файлов (объекты созданы правильно и могут быть использованы).Вот мой список:

len(hands)
47580
type(hands)
<class 'list'>
type(hands[0])
<class '__main__.BridgeHand'>

Теперь я пытаюсь засечь этот объект:

import pickle
pickle.dump(hands, open("handspi.p", "wb"))

Он создает файл handspi 9 МБ.Проблемы начинаются, когда я пытаюсь снять его:

hh = pickle.load(open(#some path to this pickle file))

Трассировка стека заканчивается на:

File "C:\Python31\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 30: character maps to      <undefined>

Что мне с этим делать?Спасибо за помощь:)

1 Ответ

7 голосов
/ 16 февраля 2011

Возможно, вы захотите попробовать открыть файл в двоичном режиме, так как вы сейчас читаете его как файл ascii.

open('picklefile.pkl','rb')
...