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

  FORUM HardWare.fr
  Programmation
  Perl

  script perl pour remplacement des chiffre en mots

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

script perl pour remplacement des chiffre en mots

n°2299018
ing8845
Posté le 11-04-2017 à 12:55:18  profilanswer
 

Bonjour ,  
 
je suis débutante en perl , mon script doit lire un fichier dictionnaire de la forme  
10 je  
11 parle
12 elle
et puis lire un autre fichier de la forme  
 
10 11  
12 11
 
 et remplacer dans ce dernier chaque nombre avec le mot correspondant dans le premier fichier  
 
le resultat est alors  
 
je parle
elle parle
 
j'ai quelques idées je pense a mettre le contenu du fichier dictionnaire dans une liste puis comparer la liste avec le 2ieme fichier  
 
#!/usr/bin/perl
use strict;
use warnings;
 use autodie;
use Tie::File;
my $filename2 = 'fich1.txt';
open(my $fh1, $filename2)
  or die "Could not open file '$filename2' $!";  
 my @binbre;
    foreach (<$fh1> ) {
      chomp;
       s/[\(\)]//g ;      
      s/^\d+|\d+$//g;
      push @binbre, $_;
print ;
    }
    close $fh1;
my $filename = 'fich2.txt';
open(my $fh, $filename)
  or die "Could not open file '$filename' $!";
 
my @rows = <$fh>;
chomp @rows;
foreach my $row (@rows) {
 if ($row = $binbre)
  {$row =~ s/$row/@binbre/g;}
 
#print "$row\n";
}
 
close $fh ;
 
 
voila mon essai mais ca donne pas le résultat souhaité  
helpppp
 
 

mood
Publicité
Posté le 11-04-2017 à 12:55:18  profilanswer
 

n°2299059
gilou
Modérateur
Modzilla
Posté le 11-04-2017 à 17:12:24  profilanswer
 

1) utiliser Tie::File que lorsque c'est au point car ça modifie ton fichier de test
2) utiliser non pas une liste, mais un hash (surtout que au vu de tes données, c'est évident)
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --    In umbra igitur pugnabimus. --
n°2299074
rat de com​bat
attention rongeur méchant!
Posté le 11-04-2017 à 18:18:34  profilanswer
 

ing8845 a écrit :

voila mon essai mais ca donne pas le résultat souhaité

Ca ne compile (on dit ça pour le Perl? gilou?) même pas...
>Global symbol "$binbre" requires explicit package name
Tu devrais revoir comment utiliser les tableaux (array).
 
Comme disais gilou un hash c'est evident ici vu les données. Comme tu indiques être étudiante je suppose que c'est un exercice, donc aucun intérêt qu'on (gilou ou moi) te présente une solution toute faite.
 
edit:  
>my @rows = <$fh>;
Inutile de lire tout le fichier en une seule fois, il vaut mieux faire un traitement ligne par ligne.


Message édité par rat de combat le 11-04-2017 à 18:19:29
n°2299076
ing8845
Posté le 11-04-2017 à 18:26:54  profilanswer
 

merci pour la réponse mais je ne sais pas comment utilisé un hash pouvez vous me fournir un exemple  

n°2299077
ing8845
Posté le 11-04-2017 à 18:30:55  profilanswer
 

en faite ce n'est pas un exercice  c'est un projet de master j'ai un fichier dictionnaire et l'autre ce sont des séquence d'item fréquent extraites d'un corpus .
j'ai simplifié le truc pasque si ca marche je le généralise

n°2299079
rat de com​bat
attention rongeur méchant!
Posté le 11-04-2017 à 18:59:52  profilanswer
 

ing8845 a écrit :

merci pour la réponse mais je ne sais pas comment utilisé un hash pouvez vous me fournir un exemple  

Désolé: RTFM.
 

ing8845 a écrit :

en faite ce n'est pas un exercice  c'est un projet de master j'ai un fichier dictionnaire et l'autre ce sont des séquence d'item fréquent extraites d'un corpus .
j'ai simplifié le truc pasque si ca marche je le généralise

C'est quoi comme master, en lien avec la programmation?

n°2299080
ing8845
Posté le 11-04-2017 à 19:02:55  profilanswer
 

mon sujet porte sur la recherche d'information . On analyse des corpus de texte pour mieux répondre aux requêtes pausé par les utilisateurs .

n°2299081
ing8845
Posté le 11-04-2017 à 20:27:43  profilanswer
 

slt !
j'ai changé la méthode mais encore ca ne me donne pas de resultat  je ne sais pas comme utiliser le hash  
open (AFILE, "fich1.txt" ) or die "unable to open file $!";
my @acon=<AFILE>;
close (AFILE);
 
open (BFILE, "< fich2.txt" ) or die "unable to open file $!";
my $bcon=join("",<BFILE> );
close (BFILE);
 
foreach my $match (@acon)
   {
 my ($num,$item)=split(/ /,$match);
 #print "test: $bcon\n";
 
        if($bcon=~m/$num(.*?)\n/i)
 {            
  my $nmatch=$&;
  my ($num)=split(/ /,$nmatch);
                $bcon =~ s/$bcon/@item/g;
  print "$item ";
   
 }
 
   }

n°2299084
rat de com​bat
attention rongeur méchant!
Posté le 11-04-2017 à 21:21:13  profilanswer
 

Citation :

je ne sais pas comme utiliser le hash  

Excuse moi mais un étudiant (h/f) en master devrait largement être capable d'utiliser un moteur de recherche. :o En principe on peut aussi faire ça avec un tableau (array) mais tu les utilises mal, il faut lire la doc ou un livre sur le Perl5.

 

edit: Je suppose que la date de naissance indiquée dans ton profil est fausse? (Ce que je peux comprendre.) Ca ne colle pas vraiment avec le master...


Message édité par rat de combat le 11-04-2017 à 21:22:34
n°2299085
ing8845
Posté le 11-04-2017 à 21:39:43  profilanswer
 

je comprends pas votre question !!  
j'ai demandé de l'aide car je suis débutante en perl et je suis pressé par le temps..  vous avez pas la réponse souhaité merci de ne pas sortir du contexte de ma question!!!
 

mood
Publicité
Posté le 11-04-2017 à 21:39:43  profilanswer
 

n°2299088
rat de com​bat
attention rongeur méchant!
Posté le 11-04-2017 à 22:35:43  profilanswer
 

Quelle question? Mon edit c'est juste par curiosité, rien ne t'obliges de répondre.

 

Pour le reste, les forums (ou en tout cas celui-ci) ne sont pas là pour enseigner des bases ni pour faire le boulot des gens (cf. règlement) mais pour répondre à des questions concrètes et précises. Tu peux très bien faire ce que tu veux faire avec un tableau/array mais comme je l'ai déjà dit deux fois il faut l'utiliser correctement et ça ce n'est pas le boulot du forum de te l'apprendre. Il y a une doc qui va avec Perl et on trouve certainement pleins de tutoriels aussi. Et puis je suppose que si tu utilises ce language c'est soit parce que tu es obligé et que tu as eu des cours avant (et donc tu devrais savoir comment utiliser les array et hash) soit ça fait partie de ton projet de l'apprendre, dans ce cas c'est à toi de faire un effort... Le manque de temps n'est pas un argument non plus, ça ne tombe pas du ciel ça généralement. Le forum est là pour apporter de l'aide sur des points précis et ça a été fait, gilou t'as indiqué une meilleure méthode de faire et je t'ai dit que tu dois revoir les array.


Message édité par rat de combat le 11-04-2017 à 22:37:27
n°2299140
gilou
Modérateur
Modzilla
Posté le 12-04-2017 à 16:21:40  profilanswer
 

J'ai code cela vite fait pendant ma pause café parce que j'ai autre chose a faire, donc je n'ai pas testé, mais une solution devrait ressembler a ceci:

Code :
  1. #!/usr/bin/env perl
  2. use strict;
  3. use warnings;
  4. use autodie;
  5.  
  6. open (my $fh, "<", "fich1.txt" );
  7. my %hash;
  8. while (<$fh> ) {
  9.    if (/^\s*(\d+)\s+(.*\S)\s*$/) {
  10.        $hash{$1}=$2;
  11.    }
  12. }
  13. close $fh;
  14. # maintenant %hash est un dictionnaire, de clés les codes numériques, et valeurs les mots associés.
  15. open ($fh, "<", "fich2.txt" );
  16. while (<$fh> ) {
  17.    if (/^\s*((\d+)\s+)*\d+\s*$/) {
  18.    my @line = split(/\s+/, $_);
  19.    foreach (@line) {
  20.        print $hash{$_}, " ";
  21.    }
  22.    print "\n";
  23.    }
  24. }
  25. close $fh;


Ça doit envoyer le résultat a la console.
 
A+,


Message édité par gilou le 12-04-2017 à 16:27:49

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --    In umbra igitur pugnabimus. --
n°2299177
ing8845
Posté le 12-04-2017 à 20:05:33  profilanswer
 

merci infiniment gilou c'est très gentil de votre part  


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

  script perl pour remplacement des chiffre en mots

 

Sujets relatifs
[PERL/MySQL] Utilisation d'une variable dans la clause WhereExplication d'un script C
.jar avec perlProblème script javascript
supprimer retour à la ligneperl et fichier XML
[PYTHON] Help compréhension scriptcomparaison string perl
[Perl] Arrêt traitement si doublons dans champ d'un fichierScript d'extraction de données
Plus de sujets relatifs à : script perl pour remplacement des chiffre en mots


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