Se connecter / S'enregistrer

Résolu Tri des lignes d'un fichier par ordre lexical croissant - Urgent

Solutions (3)
Tags :
  • Python
  • Programme
  • Programmation
|
Bonsoir,

J'aimerais savoir comment faire pour lister (en utilisant le générateur yield) un fichier-texte en triant les lignes par ordre lexical croissant.
Le tri doit s'effectuer à partir du n-ième caractère de chaque ligne (par défaut, n=0) .
Le langage de programmation utilisé est python.



Je pense qu'il faut utiliser l'instruction sort(), mais je ne vois pas trop comment m'y prendre . :??: 
Si vous avez une idée, ça m'aiderait bien car c'est relativement urgent.
Merci d'avance ! :D 
Contenus similaires
Meilleure solution
partage
|
Salut,

Je vois pas trop l'intérêt du "yield" pour un programme aussi simple... sauf pour optimiser
la méthode de tri (en implémentant un tri à bulles par exemple, ou autre algo...).
Voici un exemple de code qui fait à peu près ce que tu veux (au paramétrage de ton n-ième caractère près) :

  1. #____________________________________________
  2. def MAIN(n):
  3.  
  4. G_Liste = []
  5. G_HandlerFichier = open('./toto.txt', 'r') # le nom de ton fichier (j'ai mis toto.txt, à toi d'adapter)
  6.  
  7. for line in G_HandlerFichier:
  8. G_Liste.append(line) # ajout de la ligne lue a la liste
  9.  
  10. G_Liste.sort(lambda a, b: cmp(a[n::], b[n::])) # le critère de tri est l'ordre alphabétique croissant à partir du n-ième caractère)
  11. print G_Liste
  12.  
  13. G_HandlerFichier.close()
  14.  
  15.  
  16. #____________________________________________
  17. MAIN(0) # en parametre le numero de caractere a partir duquel effectuer le tri


J'espère avoir pu t'aider...
  • Commenter cette solution |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par hmichaud.
  • Commenter cette réponse |
Score
0
òh
òi
|
yoye34 a dit :
Salut,

Je vois pas trop l'intérêt du "yield" pour un programme aussi simple... sauf pour optimiser
la méthode de tri (en implémentant un tri à bulles par exemple, ou autre algo...).
Voici un exemple de code qui fait à peu près ce que tu veux (au paramétrage de ton n-ième caractère près) :

  1. #____________________________________________
  2. def MAIN(n):
  3.  
  4. G_Liste = []
  5. G_HandlerFichier = open('./toto.txt', 'r') # le nom de ton fichier (j'ai mis toto.txt, à toi d'adapter)
  6.  
  7. for line in G_HandlerFichier:
  8. G_Liste.append(line) # ajout de la ligne lue a la liste
  9.  
  10. G_Liste.sort(lambda a, b: cmp(a[n::], b[n::])) # le critère de tri est l'ordre alphabétique croissant à partir du n-ième caractère)
  11. print G_Liste
  12.  
  13. G_HandlerFichier.close()
  14.  
  15.  
  16. #____________________________________________
  17. MAIN(0) # en parametre le numero de caractere a partir duquel effectuer le tri


J'espère avoir pu t'aider...




Merci beaucoup , grace à toi, j'ai pu régler mon problème ! :wahoo: 
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS