Recherche et remplacement
ahmedCSS
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
-
-
Bonjour,
J'ai un fichier texte F1 et j'ai un autre fichier qui contient une liste de termes dans chaque ligne , je veux parcourir ce dernier et si je trouve le même mot dans F1 je veux le modifier, et par la suite je vais générer un autre fichier contenant les modification effectuée, voici le code:
fichier F1 contient ces deux ligne par exemple:
real madrid is the club of ronaldo
ronaldo plays at real madrid since 2009
le fichier term contient:
ronaldo
messi
le fichier générer lors de l'éxécution :
[real] madrid is the club of ronaldo
ronaldo plays at real madrid since 2009
j'ai pas trouvé l'erreur, il modifie la première mot de la phrase seuelemnt malgrés qu'elle est fausse,
le résultat souhaité comme suit normalement:
real madrid is the club of [ ronaldo ]
[ronaldo] plays at real madrid since 2009
merci pour votre aide
J'ai un fichier texte F1 et j'ai un autre fichier qui contient une liste de termes dans chaque ligne , je veux parcourir ce dernier et si je trouve le même mot dans F1 je veux le modifier, et par la suite je vais générer un autre fichier contenant les modification effectuée, voici le code:
open(FILE,$F1) || die "Problème d'ouverture du ficher en entrée"; open(FILEOUT,">$filenameout") || die "Problème d'ouverture"; open(F,"/home/Bureau/term.txt")||die " Pb pour ouvrir"; while($ligne = <FILE> ) { @val = split(/ /, $ligne); # chaque mot du F1 dans une case for ($c=0;$c<=$#val;$c++) { $z=$val[$c]; while($l = <F> ) { # parcourir le fichier des termes if($l = $z){ # si un terme est égale à un mot dans F1 $z =~ s/$z/[$z] /g;} # modifier ce mot en ajoutant deux crochets } print FILEOUT lc($z." "); } $z=""; } close (FILE); close F; close (FILEOUT);
fichier F1 contient ces deux ligne par exemple:
real madrid is the club of ronaldo
ronaldo plays at real madrid since 2009
le fichier term contient:
ronaldo
messi
le fichier générer lors de l'éxécution :
[real] madrid is the club of ronaldo
ronaldo plays at real madrid since 2009
j'ai pas trouvé l'erreur, il modifie la première mot de la phrase seuelemnt malgrés qu'elle est fausse,
le résultat souhaité comme suit normalement:
real madrid is the club of [ ronaldo ]
[ronaldo] plays at real madrid since 2009
merci pour votre aide
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Recherche et remplacement
- Remplacement coco - Accueil - Réseaux sociaux
- Coco.fr remplacement - Accueil - Réseaux sociaux
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche et remplacer word - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
1 réponse
Salut ahmedCSS,
Ton expression est bonne, c'est le tout le reste qui ne va pas.
donne bien :
Quelques indications :
- utilise strict et warnings
- déclare des variables pour tes filehandles, pas de mots nus
- lis la totalité du fichier où les remplacements doivent être effectués dans une chaîne (https://metacpan.org/pod/perlfaq5#How-can-I-read-in-an-entire-file-all-at-once)
- lis la totalité du fichier contenant les mots à traiter dans un tableau (exemples sur le même lien)
- énumère chaque mot du tableau avec un foreach et remplace tous les mots avec ton expression régulière
- il te faudra aussi retirer le retour à la ligne lu sur chaque mot (puisque le fichier des mots à traiter comporte un mot par ligne), fait le avec
Dal
Ton expression est bonne, c'est le tout le reste qui ne va pas.
#!/usr/bin/perl use strict; use warnings; my $orig = "real madrid is the club of ronaldo ronaldo plays at real madrid since 2009"; $orig =~ s/ronaldo/[ronaldo]/g; print $orig;
donne bien :
$ ./ahmedCSS.pl
real madrid is the club of [ronaldo]
[ronaldo] plays at real madrid since 2009
Quelques indications :
- utilise strict et warnings
- déclare des variables pour tes filehandles, pas de mots nus
- lis la totalité du fichier où les remplacements doivent être effectués dans une chaîne (https://metacpan.org/pod/perlfaq5#How-can-I-read-in-an-entire-file-all-at-once)
- lis la totalité du fichier contenant les mots à traiter dans un tableau (exemples sur le même lien)
- énumère chaque mot du tableau avec un foreach et remplace tous les mots avec ton expression régulière
- il te faudra aussi retirer le retour à la ligne lu sur chaque mot (puisque le fichier des mots à traiter comporte un mot par ligne), fait le avec
chomp()
Dal