[PERL] Supprimer caractère vide
Résolu/Fermé
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
-
21 juil. 2008 à 12:59
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 - 22 juil. 2008 à 14:29
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 - 22 juil. 2008 à 14:29
A voir également:
- Caractere vide
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Espace insécable Word : comment insérer des espaces incassables - Guide
- Supprimer page word vide - Guide
9 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
21 juil. 2008 à 13:15
21 juil. 2008 à 13:15
Salut,
essaie (je n'ai pas testé ;-)
essaie (je n'ai pas testé ;-)
@case_non_vide = grep { /.+/ } @case_vide;
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
21 juil. 2008 à 13:16
21 juil. 2008 à 13:16
Re,
ou
ou
push $_,@case_non_vide for @case_vide;
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
21 juil. 2008 à 14:06
21 juil. 2008 à 14:06
Je ne comprend pas ta commande lami20j.
Je dois déclarer @case_non_vide ?
Je dois déclarer @case_non_vide ?
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
21 juil. 2008 à 14:49
21 juil. 2008 à 14:49
Est ce que quelqu'un à d'autre idées à me suggérer svp?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
21 juil. 2008 à 20:12
21 juil. 2008 à 20:12
Salut,
voici un exemple, pour mieux comprendre
voici un exemple, pour mieux comprendre
lami20j@debian:~/trash$ cat tableau.pl #!/usr/bin/perl # my @vide = ("a","b","","d"); print "taille = ", scalar @vide,"\n"; my @non_vide1 = grep { /.+/ } @vide; # 1 my @non_vide2 = grep { $_ ne "" } @vide; # 2 for(@vide){push @non_vide3,$_ unless $_ eq "";} #3 print "taille = ", scalar @non_vide1,"\n"; print "taille = ", scalar @non_vide2,"\n"; print "taille = ", scalar @non_vide3,"\n"; print "-" x 20,"\n"; @vide=(); print "taille = ", scalar @vide,"\n"; print "taille = ", scalar @non_vide1,"\n"; print "taille = ", scalar @non_vide2,"\n"; print "taille = ", scalar @non_vide3,"\n"; __END__ lami20j@debian:~/trash$ perl tableau.pl taille = 4 taille = 3 taille = 3 taille = 3 -------------------- taille = 0 taille = 3 taille = 3 taille = 3
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
22 juil. 2008 à 09:47
22 juil. 2008 à 09:47
Salut,
J'ai essayé ton code, je l'ai adapté avec le mien mais j'ai toujours le même problème :
open(DESC ,$file ) or die "ERREUR ! \n"; while (<DESC> ) {
chomp($_);
push @tableauFichier , $_
}
close(DESC) ;
for ( 0 .. $#tableauFichier) {
$IdxLigneDuFichier = $_ ;
$tableauFichier[$IdxLigneDuFichier] =~ s/\s+//g;
$tableauFichier[$IdxLigneDuFichier] =~ s/\n//g;
$tableauFichier[$IdxLigneDuFichier] =~ s/('.*?')/\n$1\n/g;
my @tableauCaractere = split (/\n/ , $tableauFichier[$IdxLigneDuFichier]) ;
for ( 0 .. $#tableauCaractere ) {
$IdxCaractereDeLaLigne = $_ ;
print "$tableauCaractere[$IdxCaractereDeLaLigne\n";
}
}
Le fichier est de la forme :
my %toto => ( 'AAAAAA' =>{ 'uuu' => [ 'toto','tata', 'mouloud' ] } );
Je souhaite recuperer chaque mot entre '' dans un tableau.
Merci.
J'ai essayé ton code, je l'ai adapté avec le mien mais j'ai toujours le même problème :
open(DESC ,$file ) or die "ERREUR ! \n"; while (<DESC> ) {
chomp($_);
push @tableauFichier , $_
}
close(DESC) ;
for ( 0 .. $#tableauFichier) {
$IdxLigneDuFichier = $_ ;
$tableauFichier[$IdxLigneDuFichier] =~ s/\s+//g;
$tableauFichier[$IdxLigneDuFichier] =~ s/\n//g;
$tableauFichier[$IdxLigneDuFichier] =~ s/('.*?')/\n$1\n/g;
my @tableauCaractere = split (/\n/ , $tableauFichier[$IdxLigneDuFichier]) ;
for ( 0 .. $#tableauCaractere ) {
$IdxCaractereDeLaLigne = $_ ;
print "$tableauCaractere[$IdxCaractereDeLaLigne\n";
}
}
Le fichier est de la forme :
my %toto => ( 'AAAAAA' =>{ 'uuu' => [ 'toto','tata', 'mouloud' ] } );
Je souhaite recuperer chaque mot entre '' dans un tableau.
Merci.
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
22 juil. 2008 à 12:34
22 juil. 2008 à 12:34
Pour etre plus précise je cherche à placer chaque caractère dans le tableau car je dois vérifier la syntaxe du fichier. (exemple : après my%toto je dois trouver => sinon erreur,
après '[A-Z]+' je dois trouver , sinon erreur ... ).
Une idée?
après '[A-Z]+' je dois trouver , sinon erreur ... ).
Une idée?
Plop,
Dans ton code :
$tableauFichier[$IdxLigneDuFichier] =~ s/\s+//g;
$tableauFichier[$IdxLigneDuFichier] =~ s/\n//g;
La deuxième ligne est inutile, les \n sont compris dans les caractères représentés par \s.
De plus le + après le \s n'est pas foncièrement utile non plus, vu qu'avec l'option g tu les supprimeras tous de toute manière.
Tu peux te contenter de ça :
$tableauFichier[$IdxLigneDuFichier] =~ s/\s//g;
Sinon pour la suppression des cases vides, la solution de lamij est bonne, adaptée a ton code ca donnerait un truc comme ca, après le split :
@tableauCaractere = grep {/.+/} @tableauCaractere;
Cdt
Dans ton code :
$tableauFichier[$IdxLigneDuFichier] =~ s/\s+//g;
$tableauFichier[$IdxLigneDuFichier] =~ s/\n//g;
La deuxième ligne est inutile, les \n sont compris dans les caractères représentés par \s.
De plus le + après le \s n'est pas foncièrement utile non plus, vu qu'avec l'option g tu les supprimeras tous de toute manière.
Tu peux te contenter de ça :
$tableauFichier[$IdxLigneDuFichier] =~ s/\s//g;
Sinon pour la suppression des cases vides, la solution de lamij est bonne, adaptée a ton code ca donnerait un truc comme ca, après le split :
@tableauCaractere = grep {/.+/} @tableauCaractere;
Cdt
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
22 juil. 2008 à 14:29
22 juil. 2008 à 14:29
Merci dsgdfhdsgd et lami20j, j'ai fais les modifications. Ca fonctionne.