Faire un cast tuple -> list
Bonjour à tous,
Dans un de mes programmes je dois lire un fichier Excel.
Je le fais via le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| def readxlsfile(fichier_xls):
excel = win32com.client.Dispatch('Excel.Application')
classeur = excel.Workbooks.Open(fichier_xls)
feuille = classeur.ActiveSheet #On recupere la feuille courante
maxcol = feuille.UsedRange.Columns.Count #Recupere le nombre de colonne maximum
maxline = feuille.UsedRange.Rows.Count #Recupere le nombre de ligne maximum
sht = classeur.Worksheets(feuille.name)
donnees_lues = sht.Range(sht.Cells(1, 1), sht.Cells(maxline, maxcol)).Value
donnees_lues = list(donnees_lues)
#donnees_lues est une matrice de type "tuple" de "tuple"
#Pour faciliter le traitement par la suite on la convertit en matrice de "list" de "list"
#Pour finir on convertit chaque case de la matrice en chaîne de caractère
for i in range(len(donnees_lues)):
donnees_lues[i]=list(donnees_lues[i])
del donnees_lues[i][0] #on supprime la colonne 1
del donnees_lues[i][3] #on supprime la colonne 5
j = 0
while j < len(donnees_lues[i]):
donnees_lues[i][j]=str(donnees_lues[i][j])
j = j + 1
#
excel.Workbooks.Close()
excel.Quit()
del excel
return donnees_lues |
Le problème c'est que dès qu'il y a un caractère accentué (comme "é, è, ê, ë, à, ù, ...") ou "exotique" (comme "@, °, µ, £, $, ¤, &, `, §, ç, ...") mon script plante et refuse de continuer en me disant ce message d'erreur :
Code:
1 2 3 4
| Traceback (most recent call last):
File "C:\xxxx\script.py", line 98, in readxlsfile
donnees_lues[i][j]=str(donnees_lues[i][j])
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 6: ordinal not in range(128) |
.
--> Par exemple ici c'est un "é" que le programme ne peut pas transformer en caractère.
C'est le cast du tuple en list qui plante. Mais la question est comment faire pour que ça fonctionne?
Merci pour votre aide
ffets