Perl expressions régulières
Résolu/Fermé
deniss92
Messages postés
39
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
15 septembre 2013
-
22 mai 2009 à 09:31
deniss92 Messages postés 39 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 15 septembre 2013 - 22 mai 2009 à 10:45
deniss92 Messages postés 39 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 15 septembre 2013 - 22 mai 2009 à 10:45
A voir également:
- Perl expressions régulières
- Denon perl pro test - Accueil - Audio
- Active perl - Télécharger - Édition & Programmation
- Expressions francaises - Forum Études / Formation High-Tech
- Perl Makefile.PL - Forum Perl
- Tableau(perl) ✓ - Forum Perl
1 réponse
deniss92
Messages postés
39
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
15 septembre 2013
1
22 mai 2009 à 10:45
22 mai 2009 à 10:45
Bonjour,
J'ai ajouté les conditions ci-dessous et ça l'air de fonctionner
if ($titre =~/^(Les?)([A-Z])/){
$titre=~s/^(Les?)/$1 /gi;
}
if ($titre =~/^(La)([A-Z])/){
$titre=~s/^(La)/La /gi;
}
.....
c'est pas propre, mais ça résoud mon problème.
Voici le script final, mais je sais qu'il ya mieux.
#!/usr/bin/perl
use strict;
use warnings;
use Text::Iconv;
my $converter = Text::Iconv->new("ISO-8859-1","UTF-8");
my (@tmp,@tab, $notice, $titre,$articles,$isbn);
chdir('/home/Perl') || die ("Erreur chdir \n");
open FILE,"export.dat" or die "E/S : $!\n";
open RES,">import.txt" or die "E/S : $!\n";
while (<FILE>){
chomp;
@tmp=split(/\|/,$_);
$notice = $tmp[0];
$titre = $tmp[1];
$titre = $converter->convert($titre);
$titre =~ s/^\s+|\s+$//g; #suppression des espaces (debut et fin)
$titre =~ s/^(L(\pP)|L\')/L\' /gi;
if ($titre =~/^(Les?)([A-Z])/){
$titre=~s/^(Les?)/$1 /gi;
}
if ($titre =~/^(La)([A-Z])/){
$titre=~s/^(La)/La /gi;
}
if ($titre =~/^(The)([A-Z])/){
$titre=~s/^(The)/The /gi;
}
$titre =~ s/\^/ /g;# remplacement du caractère "^" et des espaces et tabulations par 1 seul espace
$titre =~ s/(\s+|\t)/ /g;# remplacement trop d' espaces et tabulations par 1 seul espace
$isbn =$tmp[5];
$_=join (";",$notice,$titre,$isbn);
push (@tab,$_);
}
foreach (@tab){
chomp (@tab);
print RES $_."\n";
}
J'ai ajouté les conditions ci-dessous et ça l'air de fonctionner
if ($titre =~/^(Les?)([A-Z])/){
$titre=~s/^(Les?)/$1 /gi;
}
if ($titre =~/^(La)([A-Z])/){
$titre=~s/^(La)/La /gi;
}
.....
c'est pas propre, mais ça résoud mon problème.
Voici le script final, mais je sais qu'il ya mieux.
#!/usr/bin/perl
use strict;
use warnings;
use Text::Iconv;
my $converter = Text::Iconv->new("ISO-8859-1","UTF-8");
my (@tmp,@tab, $notice, $titre,$articles,$isbn);
chdir('/home/Perl') || die ("Erreur chdir \n");
open FILE,"export.dat" or die "E/S : $!\n";
open RES,">import.txt" or die "E/S : $!\n";
while (<FILE>){
chomp;
@tmp=split(/\|/,$_);
$notice = $tmp[0];
$titre = $tmp[1];
$titre = $converter->convert($titre);
$titre =~ s/^\s+|\s+$//g; #suppression des espaces (debut et fin)
$titre =~ s/^(L(\pP)|L\')/L\' /gi;
if ($titre =~/^(Les?)([A-Z])/){
$titre=~s/^(Les?)/$1 /gi;
}
if ($titre =~/^(La)([A-Z])/){
$titre=~s/^(La)/La /gi;
}
if ($titre =~/^(The)([A-Z])/){
$titre=~s/^(The)/The /gi;
}
$titre =~ s/\^/ /g;# remplacement du caractère "^" et des espaces et tabulations par 1 seul espace
$titre =~ s/(\s+|\t)/ /g;# remplacement trop d' espaces et tabulations par 1 seul espace
$isbn =$tmp[5];
$_=join (";",$notice,$titre,$isbn);
push (@tab,$_);
}
foreach (@tab){
chomp (@tab);
print RES $_."\n";
}