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 :

Insérer un double caractère " dans un fichier en écriture


Sujet :

Python

  1. #1
    Membre éprouvé Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Par défaut Insérer un double caractère " dans un fichier en écriture
    Bonjour,

    Je me mets fraîchement au Python et je me heurte à un problème somme toute foi petit mais bien bloquant pour le reste de mon projet.

    Je désire mettre un double caractère " soit : "" dans un fichier CSV. J'utilise donc le module CSV.

    En faite, l'un des champs de mon fichier CSV contient une chaîne de caractère, si cette chaîne est vide, il doit mettre "". Quand la chaîne n'est pas vide, il n'y a pas de guillemets entourant la chaîne.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    filePtRemCsv = csv.DictReader(file, delimiter = ';')
     
    fileAnglesCsv = csv.writer(file_angles, delimiter = ';')
    fileAnglesCsv.writerow(['ID', 'DESCRIPTION', 'THE_GEOM'])
     
    angleID = 1                           # Variable qui va représenter l'ID de l'angle 
     
    theGeomVal = '55'
     
    for row in filePtRemCsv:
        tmpStr = row.get('NOM')
        if not tmpStr:
            tmpStr = '""' #Ici il y a bien "" dans tmpStr quand row.get('NOM') renvoie rien
        fileAnglesCsv.writerow([str(angleID), tmpStr, theGeomVal])
        angleID = angleID + 1
    En faite à la place de "" dans le fichier, j'obtiens : """"""

    Soit pour le code que je viens de copier, pour une ligne entière avec le NOM vide :
    2;"""""";55

    au lieu de :
    2;"";55
    Quelqu'un pourrais m'éclaircir et m’expliquer comment mettre seulement deux " ?

  2. #2
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Bonjour.

    Citation Envoyé par sardik Voir le message
    Quelqu'un pourrais m'éclaircir et m’expliquer comment mettre seulement deux " ?
    Pourquoi faire ceci et ne pas garder quelque chose comme 2;;55 qui indique une chaîne vide au milieu lors de la lecture/écriture avec le module CSV ?

  3. #3
    Membre éprouvé Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Par défaut
    Car les données sont ensuite embarqués et traités par un module que je ne peux pas modifié et qui a besoin de ces "" pour correctement fonctionner....

  4. #4
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Un peti coup d'oeil dans la doc. de CSV donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #! /usr/bin/env python3
     
    import csv
     
    file = open('test.txt', 'w')
     
    # Source
    #    http://docs.python.org/library/csv.html#csv.reader
    fileCsv = csv.writer(file, delimiter = ';', quotechar=' ')
    fileCsv.writerow(['ID', 'DESCRIPTION', 'DEFINITION'])
     
    # Problem
    fileCsv.writerow(['oneId', '""', 'oneDef'])
    fileCsv.writerow(['anotherId', 'aDescription', 'itsDef'])
    Ceci produit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ID;DESCRIPTION;DEFINITION
    oneId;"";oneDef
    anotherId;aDescription;itsDef

  5. #5
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par sardik Voir le message
    Car les données sont ensuite embarqués et traités par un module que je ne peux pas modifié et qui a besoin de ces "" pour correctement fonctionner....
    Un problème de code du côté de ce module...

  6. #6
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Le fait d'entourer les chaînes de caractères avec des "" en csv permets entre autre de pourvoir insérer des ',' (le caractère séparateur de champs) dans la chaîne de caractères.

  7. #7
    Membre éprouvé Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Par défaut
    D'accord, alors ce que j'oubliais c'était donc le

    pendant l'instanciation du CSV... Je ne comprend toujours pas très bien ce qu'est ce quotechar (même en regardant dans la doc... malheureusement )

    Mais cela fonctionne, c'est le principal !!
    Merci à vous !

  8. #8
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par sardik Voir le message
    Je ne comprend toujours pas très bien ce qu'est ce quotechar (même en regardant dans la doc... malheureusement )
    Une réponse claire se trouve ici.

  9. #9
    Membre éprouvé Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Par défaut
    Ola je ne connaissais pas ces ressources!

    Merci beaucoup !

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

Discussions similaires

  1. Insérer caractères speciaux dans un fichier word
    Par gpcbitnik38 dans le forum R
    Réponses: 0
    Dernier message: 08/07/2014, 17h16
  2. [C#] Caractères spéciaux dans un fichier
    Par KibitO dans le forum C#
    Réponses: 7
    Dernier message: 04/01/2007, 09h16
  3. Réponses: 15
    Dernier message: 04/01/2007, 08h47
  4. Insertion caractère spécial dans un fichier
    Par lenouvo dans le forum MFC
    Réponses: 2
    Dernier message: 01/02/2006, 11h30
  5. [XSL] Caractère incorrect dans un fichier XML
    Par nicobest dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/09/2005, 14h06

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