Ошибка UnicodeDecodeError при записи файла .xlsx с помощью xlsxwriter
Я пытаюсь записать около 1000 строк в файл .xlsx из моего приложения python. Данные в основном представляют собой комбинацию целых чисел и строк. При запуске команды wbook.close() возникает прерывистая ошибка. Ошибка следующая:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 15:
ordinal not in range(128)
Мои данные не имеют ничего в юникоде. Мне интересно, почему декодер вообще есть. Кто-нибудь заметил эту проблему?
Ответы
Ответ 1
0xc3 - "À". Итак, вам нужно изменить кодировку. Используйте метод decode().
string.decode('utf-8')
Также в зависимости от ваших потребностей и использования вы можете добавить
# -*- coding: utf-8 -*-
в начале вашего script, но только если вы уверены, что кодировка не будет мешать и сломать что-то еще.
Ответ 2
Как указывает Алекс Христов, в вашем коде есть некоторые данные, отличные от ascii, которые должны быть закодированы как UTF-8 для Excel.
См. следующие примеры из документов, каждый из которых имеет инструкции по обработке UTF-8 с XlsxWriter в разных сценариях: