Pb ecriture dans un fichier csv

Pb ecriture dans un fichier csv - Python - Programmation

Marsh Posté le 29-05-2009 à 09:58:08    

Bonjour,
depuis une journée je rencontre un problème lorsque je veux écrire une liste de données dans un fichier csv.
Python me donne l'erreur suivante :  "UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 12: ordinal not in range(128)"
 
Voici mon programme qui recupere des données et qui écrit dans le fichier csv:  

Code :
  1. # -*- encoding: utf-8 -*-
  2. import csv
  3. import os, sys
  4. from xml.dom import minidom
  5. #ouverture du fichier xml
  6. fsock = open('test.xml')
  7. #creation du parser xml
  8. xmldoc = minidom.parse(fsock)
  9. #ouverture des fichiers
  10. cr = csv.reader(open("test.csv","rb" ))
  11. c = csv.writer(open("MONFICHIER2.csv", "wb" ))
  12. #Lecture de tout le fichier
  13. for row in cr:
  14.     long = len(row)
  15.    
  16.     print "longueur",long
  17.     i = 0
  18.     while i < long:
  19.     #parcours tout les noeud xml ayant le nom passé en param
  20.     for node in xmldoc.getElementsByTagName('child'):
  21.  #recuperation des valeur des balises correspondantes
  22.  n_test = node.getElementsByTagName('elt0')[0]
  23.  test = n_test.firstChild.data
  24.  n_modif = node.getElementsByTagName('elt1')[0]
  25.  modif = n_modif.firstChild.data
  26.  #correspondance entre le fichier csv et le fichier xml
  27.  if row[i] == test:
  28.   row[i] = modif
  29.    
  30.     i += 1
  31.     print type(row)
  32.    
  33.     #ecriture de toutes les données dans le fichier csv
  34.     c.writerows([row])
  35. #fermeture des differents fichiers
  36. fsock.close()


 
je vous remercie pour vos réponses

Reply

Marsh Posté le 29-05-2009 à 09:58:08   

Reply

Marsh Posté le 29-05-2009 à 12:16:47    

Le caractère E9 est le "é". Ce caractère n'est pas un caractère ASCII (american standard), mais c'est un caractère ASCII étendu (standard étendu aux langues européennes).
Il faudrait donc éviter les caractères accentués.
(D'ailleurs, je vois aussi des lettres accentuées dans les commentaires, et qui sont en français en plus. Nicht gut!)

Reply

Marsh Posté le 29-05-2009 à 13:36:12    

Malheureusement je ne peux éviter les caractères accentués donc je voulais savoir si il y avait un moyen de passer outre ce problème d'accent
(j'ai enlevé les accent des commentaires et ce n'est pas de la que vient le probleme)

Reply

Marsh Posté le 02-06-2009 à 09:57:31    

Pourriez vous m'aidez cela fait deux jours que je suis sur ce problème et je n'ai toujours pas avancé
Merci d'avance

Reply

Marsh Posté le 05-06-2009 à 15:09:45    

:hello:  
 
Comme te l'a dit olivthill, le probleme vient des caractères spéciaux (non directement gérés par csv)
 
Le plus simple je pense, est d'utiliser dans ton code des chaînes unicode :

Code :
  1. maVariable = u"ma chaîne"


 
et de regarder l'exemple dans la doc de cvs
 
j'ai eu un problème du même type
http://forum.hardware.fr/hfr/Progr [...] 2097_1.htm
(encore merci Masklinn)
 
Bonne chance !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed