Похоже, есть символы, закодированные в вашем наборе данных, которые не могут быть декодированы с помощью UTF-8.А именно, «а», закодированный латинским-1.
c = 'à'
print c.decode('utf-8')
>>> UnicodeDecodeError: 'utf8' codec can't decode byte 0xe0 in position 0: unexpected end of data
print c.decode('latin-1')
>>> à
Вы можете попытаться сохранить свой набор данных в формате Unicode, если он еще не Unicode (сделайте резервную копию, прежде чем сделать это, на всякий случай).Попробуйте следующее: Откройте SPSS без открытых данных, введите
set unicode on.
, откройте свой набор данных и сохраните его.Теперь он должен быть в формате Unicode.Теперь попробуйте запустить код для импорта данных.
*** Обновление
Вы можете попытаться читать файлы по строкам и обрабатывать ошибки по мере их появления:
rawdata = []
with SavReader('largefile.sav', ioUtf8=True) as reader:
for record in reader:
try:
rawdata.append(record)
except UnicodeDecodeError:
r = record.decode('latin-1')
rawdata.append(r.encode('utf-8'))
data = pd.DataFrame(raw_data_list)
data = data.rename(columns=data.loc[0]).iloc[1:]
Поскольку у вас есть китайские символы, такие какдля этого вам, возможно, придется добавить еще один блок try:
except:
, если добавление их в список необработанных данных также приведет к ошибке.