Liste avec fichier csv

m_722 -  
Furansujean Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis en première et je bloque sur un exercice de python. Je doit compléter l'algorithme suivant afin qu'il donne dans la console une liste ( un tableau dans un tableau ) dont les informations viennent d' un fichier csv. J'ai compris que je dois utiliser un float afin de convertir et un "liste1.append(champs)". Mais je ne sais pas comment les mettre et il me manque d'autres informations. Le fichiers csv contient trois colonnes.
merci d'avance,

def construction (nom): # Construction de la liste de la collection

liste1=[]
with open(nom, encoding='utf8') as f:
entete = f.readline() # On purge la première ligne du fichier : l'en-tête.
for ligne in f:
champs = ligne.split(",") # Un tableau
print(champs)
return(liste1)
...

liste=construction("iris.csv")

Configuration: Windows / Edge 18.18362

3 réponses

  1. Furansujean Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   5
     
    Bonsoir,

    Essaie d'utiliser les balises de code pour avoir un affichage adapté pour le code.
    Je reprends donc ton code, remis en forme (ne pas oublier l'importance de l'indentation en Python), tel qu'il apparaîtrait dans un fichier .py :
    liste1=[]
    with open(nom, encoding='utf8') as f:
        entete = f.readline() # On purge la première ligne du fichier : l'en-tête.
        for ligne in f:
            champs = ligne.split(",") # Un tableau
            print(champs)
    return(liste1)
    
    liste=construction("iris.csv") 
    


    1. Concernant l'utilisation de
    float
    , as-tu une idée de la variable pour laquelle on veut passer en type
    float
    ?
    Tu peux essayer sur un exemple pour mieux comprendre ce qu'il se passe.

    2. Ce que tu veux, si j'ai bien compris, c'est une liste engloblant des listes qui contiennent les champs d'une ligne du fichier.
    Par exemple : une ligne ressemblant à
    12,0.5,14.3
    dans ton fichier csv deviendra :
    [12.0,0.5,14.3]
    . Il faut ensuite que tu la rajoutes à la liste englobante.

    N'hésite pas si tu as des questions.
    0
    1. m_722
       
      Bonsoir,
      Je pense qu'il faudrait que je fasse le float avec la variable '' champs''. Mais pour le reste oui c' est bien cela et donc je fais' ' liste1. append(champs)' ' afin de rajouter ? Je n' ai pas tout compris...
      Merci d'avance de votre réponse
      0
  2. Furansujean Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   5
     
    Bonjour,

    Prenons l'exemple que j'ai donné.
    Supposons que ta première ligne ressemble à :
    12,0.5,14.3
    .
    Lorsque tu entres la première fois dans la boucle, la variable
    ligne
    vaut
    "12,0.5,14.3"
    .

    Que vaut ensuite la variable
    champs
    suite à l'instruction
    champs = ligne.split(",")
    ?
    Comment peux-tu faire pour changer chaque élément de
    champs
    en
    float
    ?

    Effectivement ensuite tu peux utiliser la fonction
    append
    pour que ta liste englobante
    liste1
    passe de
    []
    à
    [[12,0.5,14.3]]
    à la fin du premier tour de boucle.
    0