2013-03-01 26 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