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 :

Créer une liste spécifique d'après un fichier csv


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 44
    Par défaut Créer une liste spécifique d'après un fichier csv
    Bonjour,
    Je vous explique mon soucis.
    J'ai, dans un dossier, un fichier "liste.csv" contenant 3 colonnes : la première contient le identifiants, la deuxième et la troisième les prénoms et noms correspondants aux identifiants.
    Je dois créer une fonction qui, à partir du fichier, renvoie une lisre de champs composé de : [<identifiant>,<nom>,<prenom>]

    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
    17
    18
    19
    20
    # Importer le fichier "liste.csv" :
     
    # Import du module csv
    import csv
     
    # Création de 3 listes vides pour chaque type de données:
    identifiant=[]
    nom=[]
    prenom=[]
    # Ouverture du fichier
    fichier=open("liste.csv","r")
    # Lecture du fichier
    contenu=csv.reader(fichier,delimiter=";")
    # Ajout des différentes données dans les listes vides
    for row in contenu:
        identifiant.append(row[0])
        nom.append(row[1])
        prenom.append(row[2])
    # fermeture du fichier
    fichier.close()
    Ici, j'ai mis dans des listes les différentes colonnes du tableau.
    Mon soucis est que, de 1, ma façon de faire n'est pas une fonction... et de 2, que j'obtiens seulement 3 listes et que finalement, je ne sais pas trop comment faire pour obtenir les champs demandés

    Je suis débutante en programmation.
    En espérant obtenir de l'aide !
    Merci d'avance
    Cordialement.

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Par défaut
    Tout d'abord si tu ne sais pas comment faire un fonction en python, il faudrait que tu prennes un peu de temps pour lire de la documentation sur le langage.

    Ensuite d'après ce que tu décris, contenu contient déjà le résultat sous la bonne forme donc resultat = list(contenu) (pour transformer l'itérateur contenu en une liste)

  3. #3
    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,

    Effectivement, du temps avec un cours Python est indispensable! En voici un bon: http://www.fichier-pdf.fr/2011/05/12...vre-python.pdf.

    Voilà une petite fonction qui fait le boulot demandé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import csv
     
    def extractioncsv(fichiercsv):
        liste = []
        with open(fichiercsv, 'rb') as fcsv:
            lecteur = csv.reader(fcsv, delimiter=';')
            for ligne  in lecteur:
                liste.append(ligne)
        return liste
    Avec un fichier "test.csv" qui contient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1ABC;TOTO;Albert
    2ABC;TITI;Jean
    3ABC;TATA;Louis
    Le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    liste = extractioncsv("test.csv")
    print liste
    Affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [['1ABC', 'TOTO', 'Albert'], ['2ABC', 'TITI', 'Jean'], ['3ABC', 'TATA', 'Louis']]

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 44
    Par défaut
    Bonjour,

    Merci beaucoup de vos réponse, celà m'aide grandement !

    Pour la petite info, j'ai déjà le livre de Swinnen, mais c'est la première fois que j'ai des cours de programmation, et comprendre comment écrire n'importe quelle fonction en 1h, c'est pas forcément simple quand on en a jamais fait

    J'avais donc essayer d'obtenir les données à "ma manière".

    Juste une dernière question... si je veux extraire juste le "1ABC" d'une morceau de la liste, comment puis-je m'y prendre?

    Un grand merci ! C'est agréable de voir qu'il existe des forums où les personnes répondent vite et bien !

  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
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    liste = [['1ABC', 'TOTO', 'Albert'], ['2ABC', 'TITI', 'Jean'], ['3ABC', 'TATA', 'Louis']]
     
    print liste[0]
    ['1ABC', 'TOTO', 'Albert']
     
    print liste[0][0]
    1ABC
     
    print liste[2][0]
    3ABC

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 44
    Par défaut
    Bonjour !

    Ah d'accord merci pour l'astuce je ne savais pas que l'on pouvait faire celà, ça va me sauver la vie pour mon autre programme qui utilise cette fonction !

    Si vous voulez le voir, je l'ai poster ici : http://www.developpez.net/forums/d12...outon-suivant/

    et j'ai encore un problème pour la fonction "deplacer" que je ne sais définir...
    Si vous avez le temps

    Encore merci !
    Bonne journée

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

Discussions similaires

  1. [Débutant] Créer une liste a partir d'un fichier XML
    Par lolo81 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 14/12/2013, 14h50
  2. [Google Maps] Créer une carte à l'aide d'un fichier .csv
    Par Prodiguy dans le forum APIs Google
    Réponses: 4
    Dernier message: 02/05/2013, 14h50
  3. Réponses: 32
    Dernier message: 28/08/2007, 19h57
  4. Réponses: 2
    Dernier message: 03/07/2006, 20h14
  5. Créer une liste avec des noms de fichiers
    Par Jeffboj dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 05h48

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