Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1998 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  remplacer une chaine par une autre à partir d'une liste

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

remplacer une chaine par une autre à partir d'une liste

n°2113186
yozyoz21
Posté le 24-11-2011 à 23:23:56  profilanswer
 

Bonjour.  
 
Dans un fichier J'ai  
liste_priorité = {1, 2, 3}
liste_course = {viande, fromage, ...., beurre}
.....
 
 
Je dois remplacer le contenu de la liste_course par la liste suivante que j'ai tapé sous excel:  
 
assiette
pc
tv
dvd
...
chaussette
 
Au final, je dois obtenir les même séparateurs et {} au début et à la fin.  
Mon ancienne liste comporte 15 éléments, ma nouvelle 22.
Dois enregistrer ma nouvelle liste dans un fichier texte ?  

mood
Publicité
Posté le 24-11-2011 à 23:23:56  profilanswer
 

n°2113187
gilou
Modérateur
Modzilla
Posté le 24-11-2011 à 23:47:58  profilanswer
 

Tu peux aller lire directement tes valeurs dans le fichier excel, si tu sais en quelles lignes et colonnes tu les a tapées:
 
Un exemple de script qui va lire des valeurs dans une feuille excel:
 
 

Code :
  1. #!/usr/bin/perl -w
  2.  
  3. use strict;
  4. use Win32::OLE qw(in with);
  5. use Win32::OLE::Const 'Microsoft Excel';
  6.  
  7. $Win32::OLE::Warn = 3;                                # die on errors...
  8.  
  9. # get already active Excel application or open new
  10. my $Excel = Win32::OLE->GetActiveObject('Excel.Application')
  11.    || Win32::OLE->new('Excel.Application', 'Quit');  
  12.  
  13. # open Excel file
  14. my $Book = $Excel->Workbooks->Open("c:/komodo projects/test.xls" );
  15.  
  16. # You can dynamically obtain the number of worksheets, rows, and columns
  17. # through the Excel OLE interface.  Excel's Visual Basic Editor has more
  18. # information on the Excel OLE interface.  Here we just use the first
  19. # worksheet, rows 1 through 4 and columns 1 through 3.
  20.  
  21. # select worksheet number 1 (you can also select a worksheet by name)
  22. my $Sheet = $Book->Worksheets(1);
  23.  
  24. foreach my $row (1..4)
  25. {
  26. foreach my $col (1..3)
  27. {
  28.  # skip empty cells
  29.  next unless defined $Sheet->Cells($row,$col)->{'Value'};
  30.  
  31. # print out the contents of a cell  
  32.  printf "At ($row, $col) the value is %s and the formula is %s\n",
  33.   $Sheet->Cells($row,$col)->{'Value'},
  34.   $Sheet->Cells($row,$col)->{'Formula'};        
  35. }
  36. }
  37.  
  38. # clean up after ourselves
  39. $Book->Close;


( http://www.ibm.com/developerworks/ [...] /l-pexcel/ )
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2113228
yozyoz21
Posté le 25-11-2011 à 11:33:07  profilanswer
 

Si ma liste est dans un fichier texte,  
peut on implémenter une fonction perl qui ouvre ce fichier texte, et effectue la modif dans un fichier cible ?

n°2113245
gilou
Modérateur
Modzilla
Posté le 25-11-2011 à 12:22:03  profilanswer
 

Ben il y a rien de plus simple:
0) créer une liste vide
1) Ouvrir le fichier (open, etc)
2) lire ligne a ligne chaque mot (1 par ligne, c'est ça) et le mettre dans la liste (push, etc)
3) fermer le fichier (close, etc)
4) utiliser la liste ainsi constituée pour modifier le fichier cible suivant la méthode vue dans l'autre sujet (Tie::File etc)
 
Une variante, peut être plus adaptée, serait de faire
0) creer une variable texte contenant "{"
..
2) lire ligne a ligne chaque mot (1 par ligne, c'est ça) et ajouter "mot trouvé, " a la variable texte
3) fermer le fichier (close, etc) et ajouter "}" a la variable texte
4) utiliser le texte ainsi constitué...
 
A+,


Message édité par gilou le 25-11-2011 à 12:25:37

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  remplacer une chaine par une autre à partir d'une liste

 

Sujets relatifs
recuperer un nombre depuis une chaine de caractereliste déroulante
Convertir la date et l'heure courante en chaîne de caractères.PHP + JAVASCRIPT remplacer include / iframe cross domain sans AJAX
Liste d'articles en tenant compte de caractéristiques dans une autre t[lazarus] Manipulation de chaine et extraction de caractère
(VB.NET) Meilleure façon de gérer une liste de 230.000 lignes ?[bash] [Windows] traitement a partir de nom de fichier
créer un .exe qui écrit un .txt a partir d'une selection de photoAppel d'une fonction javascript ) partir d'un href
Plus de sujets relatifs à : remplacer une chaine par une autre à partir d'une liste


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR