2013-03-01 4 views
1

J'essaie de sauver un texte avec module xlwt, la création de nouveaux documents xls et enregistrer le texte there.So Jusqu'à présent, il a très bien fonctionné, jusqu'à ce que je suis tombé sur le texte unicode: par exemple simple chaîne '80 ° '.Module xlwt - économie xls erreur unicode

Lorsque j'appelle le book.save('simple.xls'), j'obtiens UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2. Est-ce que je peux éviter cela?

Répondre

3

Au lieu d'écrire une chaîne régulière, écrire une chaîne Unicode. Par exemple, au lieu de

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

faire

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

(Bien sûr, choisir le codage approprié pour vos données.)

+0

J'ai un problème similaire en ce moment. Je passe un objet unicode à ws.write() dans mon cas. Votre code ci-dessus, en utilisant decode(), passera également un objet Unicode. J'ai le sentiment que ça ne va pas marcher. En ce moment je pense réellement que vous devez appeler encoder() pour le changer en une bonne vieille chaîne que ws.write() peut gérer. Ce qui reste à voir est de savoir à quoi il doit être encodé, et si OpenOffice et Excel vont être contents avec ça. – izak

+0

Voir http://stackoverflow.com/questions/7184454/has-anyone-been-able-to-write-out-utf-8-characters-using-pythons-xlwt – izak

+1

@izak: Au lieu de juste « avoir un sentiment ", pourquoi ne pas l'essayer et être sûr? Le code dans ma réponse fonctionne sur ma machine, et il suit les orientations données par la chose la plus proche, il est à un manuel officiel: [PDF par Chris Withers] (http://www.simplistix.co.uk/presentations/python -excel.pdf). (Voir la section intitulée « Unicode », qui, comme nous écrivons ces lignes est vers le bas de la page 22.) –