Désolé d'ouvrir un énième fil sur les fichiers csv mais je ne parviens pas à mes fins.
Voici le début de mon code :
Voici ce que j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 with open('class1.csv',newline='') as mon_fichier: global liste2 liste2 = list(csv.reader((mon_fichier),dialect='excel',delimiter='\t',lineterminator='\n')) print(liste2)
Je souhaiterais trier les lignes par ordre décroissant en fonction de la dernière colonne (qui parfois n'est pas remplie ou contient une chaîne : à la limite, je peux la remplir avec des 0 si besoin).
Code : Sélectionner tout - Visualiser dans une fenêtre à part [['AAA,aaa,,NC'], ['BBB,bbb,165.45'], ['CCC,ccc,'], ['DDD,ddd,151.04'], ['EEE,eee,200.02']]
Le tableau csv contient environ 120 lignes et 29 colonnes (c'est donc par colonne[28] que je souhaite effectuer le tri) et je souhaiterais enregistrer le résultat trié dans un autre fichier csv (ou une autre feuille du classeur).
J'ai essayé un peu de tout, notamment :
Mon souci est au niveau des éléments car le code suivant fonctionne très bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 import operator liste_triee = sorted(liste2, key=operator.itemgetter(2), reverse = True) print(liste_triee)
et donne le résultat :
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 import operator with open('essai-tri.csv',newline='') as mon_fichier: global liste2 liste2 = list(csv.reader((mon_fichier),dialect='excel',delimiter='\t',lineterminator='\n')) liste3=[] for i in range(1,len(liste2)): liste3.append(liste2[i]) print(liste3) liste_triee = sorted(liste3, key=operator.itemgetter(4), reverse = True) print(liste_triee)
C'est donc uniquement le problème de la remise à plat des listes, je pense.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [['jhh', '1', '2', '3', 'NC'], ['jfk', '5', '7', '9', '5'], ['jhfh', '6', '4', '8', '3'], ['kiol', '7', '4', 'j', '2'], ['jui', '5', '4', '4', '8']] [['jhh', '1', '2', '3', 'NC'], ['jui', '5', '4', '4', '8'], ['jfk', '5', '7', '9', '5'], ['jhfh', '6', '4', '8', '3'], ['kiol', '7', '4', 'j', '2']]
Fatigué peut-être, je tourne en rond, sans être avare de "print(...)" !
Partager