Salut,
Je débute en Python et je cherche à extraire certaines colonnes d'un fichier csv.
Est-ce que quelqu'un pourrait m'aider ?
Merci d'avance !
Salut,
Je débute en Python et je cherche à extraire certaines colonnes d'un fichier csv.
Est-ce que quelqu'un pourrait m'aider ?
Merci d'avance !
Que n'as-tu pas compris dans la documentation du module csv ?
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
J'ai bien vu la fonction writerow mais elle sert à écrire des lignes et non des colonnes, c'est bien ça ?
Bonjour,
Quand on lit un fichier csv avec le module csv, on récupère une "liste de listes" dans laquelle chaque sous-liste est une ligne avec tous les champs (les colonnes) séparées par une virgule. Il est alors facile d'en extraire une des colonnes.
Exemple:
Extraction de la 3ème colonne (indice 2):
Code : Sélectionner tout - Visualiser dans une fenêtre à part malistecsv = [["col00", "col01", "col02", "col03", "col04"], ["col10", "col11", "col12", "col13", "col14"], ["col20", "col21", "col22", "col23", "col24"]]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 print([ligne[2] for ligne in malistecsv]) ['col02', 'col12', 'col22']
Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
Mes recettes python: http://www.jpvweb.com
Je suis sûre d'avoir tout compris à la réponse que tu as écrite
Je vais être plus précise. J'ai un fichier avec 2 colonnes Time et Values pour simplifier et je ne veux qu'écrire que la première colonne Time dans mon fichier de sortie. J'ai tenté de coder ça de cette façon, mais mon fichier de sortie est toujours vide :
Une idée de comment améliorer mon code ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 fieldnames = ['Time', 'Value'] my_writer = csv.DictWriter(out_file, delimiter = ',', fieldnames = fieldnames) my_reader = csv.DictReader(zephir_file, delimiter = ',') for i in my_reader: if i == 0: my_writer.writerow(i)
Bonjour,
Quand un truc ne marche pas, il est souvent intéressant de créer un exemple complet en dehors du programme lui-même sur lequel on peut tester des solutions.
Prenons un fichier csv appelé table01.csv qui contient:
Tu as utilisé dans ton code les méthodes DictReader et DictWriter qui passent par l'intermédiaire d'un dictionnaire, mais je n'en vois pas l'intérêt: ça ajoute, à mon avis, une complexité inutile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 "titre1";"titre2";"titre3";"titre4";"titre5" "col00";"col01";"col02";"col03";"col04" "col10";"col11";"col12";"col13";"col14" "col20";"col21";"col22";"col23";"col24"
Voilà ce que je propose (Python 3):
Cela donne un fichier table02.csv qui contient maintenant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 import csv with open("table01.csv", "r") as fsrce: with open("table02.csv", "w", newline='') as fdest: my_reader = csv.reader(fsrce, delimiter = ';') my_writer = csv.writer(fdest, delimiter = ';') for ligne in my_reader: # ligne est une liste de valeurs de colonnes my_writer.writerow([ligne[0]]) # ligne[0] est la valeur de la 1ère colonne de la ligne considéré
Est-ce le résultat attendu?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 titre1 col00 col10 col20
Si c'est le cas, on peut simplifier: utiliser simplement fdest.write() au lieu de my_writer.writerow(). Cela donnerait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 import csv with open("table01.csv", "r") as fsrce: with open("table02.csv", "w") as fdest: my_reader = csv.reader(fsrce, delimiter = ';') for ligne in my_reader: fdest.write(ligne[0] + '\n')
Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
Mes recettes python: http://www.jpvweb.com
Merci beaucoup c'est exactement le résultat attendu !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager