IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

probleme csv et encodage utf8


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Responsable NTIC, Systèmes et réseaux
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable NTIC, Systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut probleme csv et encodage utf8
    Bonsoir à tous,

    j'ai un problème avec le code ci dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import glob
    import codecs 
    FicSource=glob.glob('D:\\Dossier en cours\\dematerialisation\\ATTENTION_ORIGINAUX\\test\\*.csv')
    for i in FicSource:
        print i
        edi=csv.reader(open(i,"rb"),dialect='excel')    
        for ligne in edi:  
            print ligne
    pour toutes les premieres lignes de tous mes CSV, il m'affiche à lécran:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> 
    D:\Dossier en cours\dematerialisation\ATTENTION_ORIGINAUX\test\021111_101.csv
    ['\xef\xbb\xbf"A06619";"MSA";"D:\\Scan\\Export\\021111\\A06619_MSA_021111.pdf";"";"";"";"";"";"021111"']
    je ne comprends pas d'ou il sort le \xef\xbb\xbf du début...j'ai fait pas mel de recherche mais impossible de m'en sortir...est ce que quelqu'un peut m'apporter de l'aide...merci d'avance et bonne soirée à tous...

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il s'agit du "BOM" de l'utf-8: http://en.wikipedia.org/wiki/Byte_order_mark.

    Certains logiciels utilisent ce marqueur en début de fichier pour reconnaitre l'encodage du fichier.

    Sous Python, on peut neutraliser ce BOM utf-8 en utilisant l'encodage spécial "utf_8_sig".

    Sous Windows, le "bloc-note", utilisé en utf-8, enregistre et lit en utilisant le BOM.

  3. #3
    Membre averti
    Homme Profil pro
    Responsable NTIC, Systèmes et réseaux
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable NTIC, Systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut
    Bonsoir et merci pour ce premier retour,
    je vais donc googleliser utf_8_sig et essayer de voir comment neutraliser cela a l'interieur de mon code...
    je reviens vers vous si google ne veux pas m'aider...

  4. #4
    Membre averti
    Homme Profil pro
    Responsable NTIC, Systèmes et réseaux
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable NTIC, Systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut suite.
    je tourne en rond...je ne trouve rien....

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    En partant du principe que les 3 octets du BOM sont au tout début du fichier, et comme le fichier csv est un fichier texte: tentons un changement d'encodage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import codecs
     
    fs = codecs.open("fichiersource.csv", 'r',  'utf_8_sig')
    fd = codecs.open("fichierdest.csv", 'w',  'latin1')
    for ligne in fs:
        fd.write(ligne)
    fd.close()
    fs.close()
    Et utiliser ensuite le fichier destinataire encodé maintenant en latin1.

    Et si le fichier devait rester en utf-8 mais sans BOM, il suffit de remplacer latin1 par utf-8 (mais pas par 'utf_8_sig'!).

  6. #6
    Membre averti
    Homme Profil pro
    Responsable NTIC, Systèmes et réseaux
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable NTIC, Systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut
    une chose a dire...merci!
    ton aide devrait me permettre de faire beaucoup plus de chose que prévu demain au taf...ça fonctionne trés bien.merci et bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [9.0] Erreur encodage utf8 lors d'importation fichier csv
    Par aurelie.guegan.15 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 17/07/2014, 16h36
  2. [WD11] Probleme encodage UTF8
    Par louis.le dans le forum WinDev
    Réponses: 16
    Dernier message: 12/05/2011, 15h36
  3. Probleme d'encodage UTF8
    Par anta_res dans le forum Requêtes
    Réponses: 1
    Dernier message: 27/11/2009, 17h32
  4. probleme encodage utf8, latin1
    Par crischprolch dans le forum Outils
    Réponses: 1
    Dernier message: 06/07/2007, 16h02
  5. fonction native d'encodage utf8 ?
    Par Bruno2000 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/05/2006, 17h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo