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 :

Ajout de caractère dans une liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut Ajout de caractère dans une liste
    Bonjour,

    J'ai un fichier CSV avec 9 colonnes. Chaque rangée contient des données mais pas obligatoirement dans chaque colonne.
    J'aimerais faire en sorte qu'une rangée avec une colonne vire soit remplaçée par une virgule.
    Ex:
    Computer, ItemOrder, Category, ItemName, ItemValue1, ItemValue2, ItemValue3, ItemValue4, ItemValue5 # 1ere rangée exemple
    PC1, 1, Résumé du Système, Computer Name, PC1 # 2eme ligne
    Donc dans ce cas ajouter 4 virgules.

    Voici le début de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import csv
    auditReader = csv.reader(open('c:/bidon/NOVICOMTT.csv'), delimiter=',')
    #auditReader.__next__()    # enleve la premiere ligne du fichier
     
    for row in auditReader:
        r=print(', '.join(row))
    J'ai du mal à voir comment faire pour compter le nombre de colonnes dans chaque rangée et y ajouter les virgules.
    J'utilise python3.

    Merci de votre aide.

  2. #2
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    row tel que retourné par l’itération sur ton csvreader est une liste, donc il te suffit de récupérer sa longueur (len()), autrement dit son nombre de colonnes, et compléter par le nombre nécessaire de virgules…

    Par exemple, en supposant que tu connais le nombre maximal de colonnes*:

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import csv
    auditReader = csv.reader(open('c:/bidon/NOVICOMTT.csv'), delimiter=',')
    #auditReader.__next__()    # enleve la premiere ligne du fichier
    max_columns = 10
     
    for row in auditReader:
        row += ' ' * (max_columns-len(row))
        r=print(', '.join(row))

    PS*: J’ai supposé que tu ne voulais pas rajouter de virgules, mais simplement matérialiser les cellules (colonnes) manquantes par un espace vide, séparé comme le reste par des virgules…

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut
    Merci beaucoup mont29.
    C'était exactement ce que je voulais

    Je continue dans mon projet et la je butte sur un autre problème.
    Mon objectif est de transférer mon fichier CSV dans excel c'est pour ça que j'ai mis des point-virgules à la place de virgule.

    Mon problème est que parfois dans une colonne j'ai du texte entouré de "".
    Donc quand j'enregistre le CSV il prend la ligne au complet entouré de "" en plus il ajoute une ligne vide.
    Ex:
    PC1,4,Résumé du Système,Roles,"Workstation, Server, SQL Server, Potential Browser" #fichier de base
    "PC1; 4; Résumé du Système; Roles; Workstation, Server, SQL Server, Potential Browser; ; ; ; ; " # résultat

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import csv
    auditReader = csv.reader(open('c:/bidon/PC1.csv'), delimiter=',')
    auditReader.__next__()            # enleve la premiere ligne du fichier
    auditWriter = csv.writer(open('c:/bidon/PC1test.csv', 'w'))
    max_columns = 10
     
    for row in auditReader:
        row += ' ' * (max_columns-len(row))
        r=print('; '.join(row))
        auditWriter.writerow(['; '.join(row)])
    Qu'est ce que je fais pas bien dans mon code? Je pensais que tout ce qui se trouve entre virgules allaient être repris comme tel.
    Existe-t'il aussi un moyen pour faciliter la transition dans excel.

    Merci de m'éclaircir.

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Si tu veux comprendre tu mets des print

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import csv
    auditReader = csv.reader(open('c:/bidon/PC1.csv'), delimiter=',')
    auditReader.__next__()            # enleve la premiere ligne du fichier
    auditWriter = csv.writer(open('c:/bidon/PC1test.csv', 'w'))
    max_columns = 10
     
    compteur = 1 
    for row in auditReader:
        print("ligne{} :".format(compteur), row)
        row += ' ' * (max_columns-len(row))
        print("ligne{} :".format(compteur), row)
        r='; '.join(row)
        print(r)
        compteur += 1

  5. #5
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Si c’est juste une conversion entre dialectes csv, tu sais que tu peux les spécifier pour le reader et le writer*? Cf. http://docs.python.org/py3k/library/csv.html

  6. #6
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut
    Salut fred1599,

    Je viens de le tester et je constate que oui ça fonctionne comme ça mais dès que je rajoute le .writerow() il me rajoute les guillemets.

    Est ce possible que le module CSV créé ce problème ou c'est moi qui comprend rien

    Merci

  7. #7
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    On peut voir le résultat sur 2 ou 3 lignes?

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

Discussions similaires

  1. ajouter un élément dans une liste
    Par Le Mérovingien dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 02/07/2006, 17h43
  2. Réponses: 4
    Dernier message: 22/05/2006, 11h53
  3. [PHP-JS] ajout d'options dans une liste deroulante
    Par moonia dans le forum Langage
    Réponses: 10
    Dernier message: 04/05/2006, 11h18
  4. Ajouter un valeur dans une liste modifiable
    Par ancylia dans le forum Access
    Réponses: 1
    Dernier message: 22/09/2005, 12h50
  5. Saisie de plusieurs caractère dans une liste déroulante
    Par Oluha dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/03/2005, 14h32

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