Модуль xlwt - сохранение ошибки xls unicode

Я пытаюсь сохранить текст с помощью модуля xlwt, создавая новый документ xls и сохраняя в нем текст. Пока все работало отлично, пока я не наткнулся на текст в Юникоде: например, простая строка '80 ° '.

Когда я звоню book.save('simple.xls'), я получаю UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2. Есть ли способ избежать этого?


person Zed    schedule 01.03.2013    source источник


Ответы (1)


Вместо того, чтобы писать обычную строку, напишите строку Unicode. Например, вместо

ws.write(r, c, '80°')

do

ws.write(r, c, '80°'.decode('cp1252'))

(Конечно, выберите подходящую кодировку для ваших данных.)

person John Y    schedule 01.03.2013
comment
У меня сейчас похожая проблема. В моем случае я передаю объект unicode в ws.write (). Ваш код выше, используя decode (), также передаст объект Unicode. У меня такое чувство, что это не сработает. Прямо сейчас я думаю, что вам нужно вызвать encode (), чтобы преобразовать ее в старую добрую строку, которую может обработать ws.write (). Что еще предстоит увидеть, так это то, как это должно быть закодировано, и будут ли этим довольны и OpenOffice, и Excel. - person izak; 25.07.2014
comment
См. stackoverflow.com/questions/7184454/ - person izak; 25.07.2014
comment
@izak: Вместо того, чтобы просто почувствовать, почему бы вам не попробовать и убедиться? Код в моем ответе работает на моей машине и соответствует руководству, которое дает наиболее близкий к официальному руководству: этот PDF-файл Криса Уизерса. (См. Раздел Unicode, который на момент написания этой статьи находится внизу страницы 22.) - person John Y; 25.07.2014
comment
@izak: Как будто ссылка, которую я дал ранее, недостаточно авторитетна, получивший наибольшее количество голосов и принятый ответ на вопрос, на который вы ссылались, был написан самим автором xlwt, и он явно заявляет, что xlwt принимает (и фактически предпочитает) unicode ввод . - person John Y; 25.07.2014
comment
Достаточно справедливо :-) Мне удалось решить и свою собственную проблему, хотя к настоящему времени я даже не могу вспомнить, что я сделал, достаточно сказать, что Unicode не такая большая проблема, как я думал. - person izak; 13.10.2014