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:
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:[['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:
1
2
3 import operator liste_triee = sorted(liste2, key=operator.itemgetter(2), reverse = True) print(liste_triee)
et donne le résultat :Code:
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:
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(...)" !