Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1487 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Pb ecriture dans un fichier csv

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb ecriture dans un fichier csv

n°1889283
ced54000
Posté le 29-05-2009 à 09:58:08  profilanswer
 

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

mood
Publicité
Posté le 29-05-2009 à 09:58:08  profilanswer
 

n°1889388
olivthill
Posté le 29-05-2009 à 12:16:47  profilanswer
 

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!)

n°1889419
ced54000
Posté le 29-05-2009 à 13:36:12  profilanswer
 

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)

n°1890267
ced54000
Posté le 02-06-2009 à 09:57:31  profilanswer
 

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

n°1891689
ptr00
Posté le 05-06-2009 à 15:09:45  profilanswer
 

: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 !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Pb ecriture dans un fichier csv

 

Sujets relatifs
déclencher le calcul d'un fichier excel avec VBAPb d'execution de commande DOS
APACHE POI 3.5 - Lecture de fichier XLSX - InvalidFormatException !Pb requete Mysql
Dans USS transformer fichier format UNIX en format Windowsecriture sur la base de donnée: Ciel gestion commerciale
Un graphe à partir d'un fichierRevenir au début d'un fichier
Recherche Lib pour fichier .conf[Fortran 77] Pb ecriture fichier : pseudo-NaN...
Plus de sujets relatifs à : Pb ecriture dans un fichier csv


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR