2013-03-01 27 views
1

我试图用xlwt模块保存一些文本,创建新的xls文档并保存文本。到目前为止,它工作得很好,直到我遇到unicode文本:例如简单的字符串'80 °”。xlwt模块 - 保存xls unicode错误

当我致电book.save('simple.xls')时,我收到UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2。有没有什么办法可以避免这种情况?

回答

3

不是写一个常规字符串,而是写一个Unicode字符串。例如,而不是

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

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

(当然,选择适合您的数据适当的编码。)

+0

我有一个类似的问题现在。我在我的情况下将一个unicode对象传递给ws.write()。上面的代码使用decode(),也会传递一个unicode对象。我有一种感觉,这是行不通的。现在我实际上认为你需要调用encode()来将它改成ws.write()可以处理的旧字符串。还有待观察的是它必须被编码为什么,如果OpenOffice和Excel都会对此感到满意的话。 – izak 2014-07-25 08:55:19

+0

查看http://stackoverflow.com/questions/7184454/has-anyone-been-able-to-write-out-utf-8-characters-using-pythons-xlwt – izak 2014-07-25 08:57:25

+1

@izak:而不仅仅是“有一种感觉“,你为什么不尝试并确定?我的答案中的代码适用于我的机器,并遵循最接近官方手册的指导:[本文由Chris Withers编辑](http://www.simplistix.co.uk/presentations/python -excel.pdf)。 (请参阅标题为“Unicode”的部分,截至撰写本文时为第22页的底部。) – 2014-07-25 14:42:23