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 avec la méthode csv_reader()


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2022
    Messages : 36
    Points : 35
    Points
    35
    Par défaut probleme avec la méthode csv_reader()
    Bonjour
    j'ai ce fichier csv:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    name,price,quantity
    "Phone",100,1
    "Laptop",1000,3
    "Cable",10,5
    "Mouse",50,5
    "Keyboard",75,5
    et j'ai ces 2 codes:
    code1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import csv
     
    print("debut")
    with open("items.csv", "r") as f:
        reader=csv.DictReader(f)
        # liste=list(reader)
     
        for item in reader:
            print (dict(item))
    la sortie me donne :
    debut
    {'name': 'Phone', 'price': '100', 'quantity': '1'}
    {'name': 'Laptop', 'price': '1000', 'quantity': '3'}
    {'name': 'Cable', 'price': '10', 'quantity': '5'}
    {'name': 'Mouse', 'price': '50', 'quantity': '5'}
    {'name': 'Keyboard', 'price': '75', 'quantity': '5'}
    code2 où je decommente items=list(reader)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import csv
     
    print("debut")
    with open("items.csv", "r") as f:
        reader=csv.DictReader(f)
        liste=list(reader)
     
        for item in reader:
            print (dict(item))
    la sortie me donne que
    début
    je comprends pas pourquoi avec items=list(reader)
    je 'narrive pas à lire chaque item qui est converti en dictionnaire svp

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par sqlbeginner Voir le message
    je comprends pas pourquoi avec items=list(reader)
    je 'narrive pas à lire chaque item qui est converti en dictionnaire svp
    Ben relisez votre code!
    L'instruction liste=list(reader) se termine avec le fichier lu et les items dans liste. La boucle for item in reader n'a plus rien à traiter et n'exécutera jamais de "print".

    Ce genre d'erreur montre juste que vous n'avez pas passé assez de temps à faire les exercices (corrigés) proposés dans les tutos (c'est là qu'on se rassure sur le fonctionnement de Python et qu'on acquiert les bons réflexes côté relecture du code).


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from csv import DictReader
     
    def main() -> None:
        '''Main function.'''
        with open('content.csv') as csv:
            reader: DictReader = DictReader(csv, delimiter=',')
            for line in reader:
                print(line)
     
    if __name__ == '__main__':
        main()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {'name': 'Phone', 'price': '100', 'quantity': '1'}
    {'name': 'Laptop', 'price': '1000', 'quantity': '3'}
    {'name': 'Cable', 'price': '10', 'quantity': '5'}   
    {'name': 'Mouse', 'price': '50', 'quantity': '5'}   
    {'name': 'Keyboard', 'price': '75', 'quantity': '5'}
    Est-ce ce que vous souhaitez ?

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 102
    Points : 4 448
    Points
    4 448
    Par défaut
    bonjour
    Tu désires sauvegarder chaque ligne dans un tableau ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        liste=[]
        for item in reader:
            liste.add(item)
     
        # plus tard
        for item in liste:
            print (item['name'])
    Ton code fonctionne très bien (mais bien sûr, il faut boucler sur le tableau pour voir le résultat)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    liste=list(reader)
    print(liste)
    for item in liste:
        print (item['name'])
    $moi= ( !== ) ? : ;

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par sqlbeginner Voir le message
    je comprends pas pourquoi avec items=list(reader)
    je 'narrive pas à lire chaque item qui est converti en dictionnaire svp
    Un générateur n'est consommable qu'une seule fois
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> g=(x for x in range(5))
    >>> print(tuple(g))
    (0, 1, 2, 3, 4)
    >>> print(tuple(g))
    ()

    Tu veux utiliser le générateur plusieurs fois tu commences par le récupérer dans un tuple => reader=tuple(csv.DictReader(f)).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Un générateur n'est consommable qu'une seule fois
    Surtout quand il arrive à la fin du fichier... et on pourrait faire fonctionner ce code en écrivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import csv
     
    print("debut")
    with open("items.csv", "r") as f:
        reader=csv.DictReader(f)
        liste=list(reader)
        f.seek(0)
        for item in reader:
            print (dict(item))
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 123
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 123
    Points : 1 630
    Points
    1 630
    Par défaut
    A partir du moment où on a récupéré les données dans une liste, on peut utiliser cette liste sans passer par le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import csv
     
    print("debut")
    with open("items.csv", "r") as f:
        reader=csv.DictReader(f)
        liste=list(reader)
     
    for item in liste:
        print (dict(item))

Discussions similaires

  1. probleme avec la méthode contains
    Par nabilfaouzi dans le forum VB.NET
    Réponses: 6
    Dernier message: 10/03/2008, 03h08
  2. Probleme avec la méthode OpenReport
    Par 4rn0_o dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/08/2007, 15h23
  3. probleme avec la méthode insert de std::set
    Par elekis dans le forum SL & STL
    Réponses: 4
    Dernier message: 18/04/2007, 18h01
  4. probleme avec la méthode "delete", (ADO)
    Par nguhv dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/04/2007, 13h56
  5. [Wscript] probleme avec la méthode send
    Par machinTruc dans le forum Windows
    Réponses: 8
    Dernier message: 18/05/2005, 17h30

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