Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ignorer les titres

5 réponses
Avatar
nicolas_laurent545
Bonjour,
Ce petit programme m'aide =E0 mettre sur une m=EAme ligne les mots qui ont
le m=EAme verbe =E0 l'infinitif, seulement le programme traite aussi les
titres. Comment faire pour que le programme ignore les titres de fa=E7on
=E0 ce que j'obtiens:

<file>premier fichier</file>
rester -> reste,restant
<file>deuxeme ficher</file>
manger -> mangez,mangeons
regarder -> regardez
<file>troisieme fichier</file>
aimer -> aimons,aimez

Je vous remercie d'avance

#!/usr/bin/perl
use warnings;
use strict;
my %hash;
while(<DATA>) {
chomp;
my($key,$val) =3D split(/\s*->\s*/);
push(@{$hash{$key}},$val);
}

for my $key (sort keys %hash) {
print "$key -> @{$hash{$key}}\n";
}

__DATA__
<file>premier fichier</file>
rester -> reste
rester -> restant
<file>deuxeme ficher</file>
manger -> mangeoire
manger -> mangeons
regader -> regardez
<file>troisieme fichier</file>
aimer -> aimons
aimez -> aimez

5 réponses

Avatar
Paul Gaborit
À (at) Tue, 12 Jun 2007 08:36:26 -0700,
écrivait (wrote):
Ce petit programme m'aide à mettre sur une même ligne les mots qui ont
le même verbe à l'infinitif, seulement le programme traite aussi les
titres. Comment faire pour que le programme ignore les titres de façon
à ce que j'obtiens:
[...]

my($key,$val) = split(/s*->s*/);
push(@{$hash{$key}},$val);


Il suffit de remplacer ces deux lignes afin de tester la présence de
la flêche avant de faire quoi que ce soit :

if (m/->/) {
my($key,$val) = split(/s*->s*/);
push(@{$hash{$key}},$val);
}

Mais, quitte à tester, autant mémoriser ce qu'il y a avant et après
dans le même temps.

if (m/^(.*)s*->s*(.*)$/) {
push(@{$hash{$1}},$2);
}

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
nicolas_laurent545
On Jun 13, 3:09 am, Paul Gaborit wrote:
À (at) Tue, 12 Jun 2007 08:36:26 -0700,
écrivait (wrote):

Ce petit programme m'aide à mettre sur une même ligne les mots qui ont
le même verbe à l'infinitif, seulement le programme traite aussi les
titres. Comment faire pour que le programme ignore les titres de façon
à ce que j'obtiens:
[...]

my($key,$val) = split(/s*->s*/);
push(@{$hash{$key}},$val);


Il suffit de remplacer ces deux lignes afin de tester la présence de
la flêche avant de faire quoi que ce soit :

if (m/->/) {
my($key,$val) = split(/s*->s*/);
push(@{$hash{$key}},$val);
}

Mais, quitte à tester, autant mémoriser ce qu'il y a avant et après
dans le même temps.

if (m/^(.*)s*->s*(.*)$/) {
push(@{$hash{$1}},$2);
}

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>


Merci pour votre aide, les deux bouts de code font exactement la même
chose et dans les deux cas les titres sont ignorés, mais je les perds
dans le output. J'aurais besoin encore de votre aide car je connais
pas grand chose à la programmation.


Avatar
Paul Gaborit
À (at) Wed, 13 Jun 2007 09:25:00 -0700,
écrivait (wrote):
Merci pour votre aide, les deux bouts de code font exactement la même
chose et dans les deux cas les titres sont ignorés,


C'était le but. L'intérêt du deuxième bout de code est juste qu'il est
plus concis.

Ces deux bouts de codes ne se comportent pas exactement de la même
manière si vous avez une ligne avec deux flèches (->)... mais cela ne
dervait jamais arriver.

[...] mais je les perds
dans le output. J'aurais besoin encore de votre aide car je connais
pas grand chose à la programmation.


C'est un autre problème. Mais ma boule de cristal est cassée ! Il
faudra donc que vous nous en disiez un peu plus si vous souhaitez
qu'on essaie de vous aider...


--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
fred78980
On Jun 13, 12:37 pm, Paul Gaborit
wrote:
À (at) Wed, 13 Jun 2007 09:25:00 -0700,
écrivait (wrote):

Merci pour votre aide, les deux bouts de code font exactement la même
chose et dans les deux cas les titres sont ignorés,


C'était le but. L'intérêt du deuxième bout de code est juste qu'i l est
plus concis.

Ces deux bouts de codes ne se comportent pas exactement de la même
manière si vous avez une ligne avec deux flèches (->)... mais cela ne
dervait jamais arriver.

[...] mais je les perds
dans le output. J'aurais besoin encore de votre aide car je connais
pas grand chose à la programmation.


C'est un autre problème. Mais ma boule de cristal est cassée ! Il
faudra donc que vous nous en disiez un peu plus si vous souhaitez
qu'on essaie de vous aider...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Alors j'ai un fichier assez long avec des séparations qui fonctionne

comme de titres et une liste de verbes. Si j'imprime cette liste,
c'est long pour rien. alors je veux mettre les dérivés d'un même verbe
sur la même ligne
mais je veux garder les titres. Si vous êtes consultant et prêt à
m'aider dites moi combien vous chargez à l'heure, et si vous êtes
disponible j'aurais besoin de vos services.
Merci


Avatar
Klaus
On Jun 13, 6:25 pm, wrote:
On Jun 13, 3:09 am, Paul Gaborit wrote:

À (at) Tue, 12 Jun 2007 08:36:26 -0700,
écrivait (wrote):

Ce petit programme m'aide à mettre sur une même ligne les mots qu i ont
le même verbe à l'infinitif, seulement le programme traite aussi les
titres. Comment faire pour que le programme ignore les titres de fa çon
à ce que j'obtiens:
[...]

my($key,$val) = split(/s*->s*/);
push(@{$hash{$key}},$val);


Il suffit de remplacer ces deux lignes afin de tester la présence de
la flêche avant de faire quoi que ce soit :

if (m/->/) {
my($key,$val) = split(/s*->s*/);
push(@{$hash{$key}},$val);
}

Mais, quitte à tester, autant mémoriser ce qu'il y a avant et apr ès
dans le même temps.

if (m/^(.*)s*->s*(.*)$/) {
push(@{$hash{$1}},$2);
}


Merci pour votre aide, les deux bouts de code font exactement la même
chose et dans les deux cas les titres sont ignorés, mais je les perds
dans le output.


Merci de reduire le programme au minimum pour localiser et isoler le
problème. Ensuite, il est beaucoup plus facile d'obtenir une réponse
dans un newsgroup pour le problème.

J'aurais besoin encore de votre aide car je connais
pas grand chose à la programmation.


voir Perlfaq 2 "Les livres sur Perl":
http://perl.enstimac.fr/DocFr/perlfaq2.html#les%20livres%20sur%20perl

--
Klaus