[PERL]: HELP script traitement txt tabulaire
Résolu/Fermé
piccolupo13
Messages postés
4
Date d'inscription
mardi 21 août 2007
Statut
Membre
Dernière intervention
16 octobre 2007
-
21 août 2007 à 18:29
piccolupo13 Messages postés 4 Date d'inscription mardi 21 août 2007 Statut Membre Dernière intervention 16 octobre 2007 - 21 août 2007 à 20:48
piccolupo13 Messages postés 4 Date d'inscription mardi 21 août 2007 Statut Membre Dernière intervention 16 octobre 2007 - 21 août 2007 à 20:48
A voir également:
- [PERL]: HELP script traitement txt tabulaire
- Script vidéo youtube - Guide
- Youtube traitement de la version hd en cours ✓ - Forum Internet / Réseaux sociaux
- Traitement de texte gratuit - Guide
- Bash script arguments - Astuces et Solutions
- Openoffice traitement de texte - Télécharger - Suite bureautique
2 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 566
21 août 2007 à 20:21
21 août 2007 à 20:21
#!/usr/bin/perl
use strict;use warnings;
my %h;
while(<>){
chomp and my ($k,$v) = split /\t+/,$_,2;
# ici j'enleve d'abord le caractère saute de ligne \n
# ensuite je sépare la chaine de la façon suivante
# $k contiendra le 1er mot (Exemple : fait)
# $v contendra le reste de la chaîne (Exemple : ADJ fait)
push @{$h{$k}},split /\t+/,$v
# ici c'est un peu plus compliqué
# en fait j'utilise hachage de tableaux
# chaque clé est une référence à un tableau anonyme
# et pour chaque mot (vu que la clés est unique)
# je rajoute avec push le reste de la ligne
# en les eclatant sur les tabulations
# donc chaque mots sera un élément de tableau
# qui permettra peut être une utilisation ultérieure
# ce n'était pas vraiment nécessaire, mais bon
# tu ne vas pas te facher pour autant :-)
}
# pour chaque clé de hachage (qui est le mot)
# je sort et j'affiche le tableau qui contient toutes les correspondances
# pour chaque mot
printf "%-15s @{$h{$_}}\n",$_ foreach (sort keys %h);
__END__
Il faut voir les fonctions chomp, split, push, sort
ainsi que les listes, les tableaux, les hash
et ensuite les structures de données en Perl
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 566
21 août 2007 à 19:14
21 août 2007 à 19:14
Salut,
lami20j@deb:~/trash$ cat ccm.pl
#!/usr/bin/perl
use strict;use warnings;
my %h;
while(<>){
chomp and my ($k,$v) = split /\t+/,$_,2;
push @{$h{$k}},split /\t+/,$v
}
printf "%-15s @{$h{$_}}\n",$_ foreach (sort keys %h);
__END__
lami20j@deb:~/trash$ cat piccolupo
fait ADJ fait
faites VER:conj faire
faite VER:pper faire
fait NOM fait
faitout NOM faitout
faitouts NOM faitout
faits VER:pper faire
fait VER:conj faire
fait VER:pper faire
lami20j@deb:~/trash$ perl ccm.pl piccolupo
fait ADJ fait NOM fait VER:conj faire VER:pper faire
faite VER:pper faire
faites VER:conj faire
faitout NOM faitout
faitouts NOM faitout
faits VER:pper faire
lami20j@deb:~/trash$
piccolupo13
Messages postés
4
Date d'inscription
mardi 21 août 2007
Statut
Membre
Dernière intervention
16 octobre 2007
32
21 août 2007 à 19:49
21 août 2007 à 19:49
Bonsoir lami20j !
Tout d'abord un grand MERCI pour ta réponse si rapide et efficace.
Sans vouloir abuser de ton aide, pourrais-tu m'expliquer un petit peu ce que font les lignes de ton script ?
d'avance merci ;)
Piccolupo 13
Tout d'abord un grand MERCI pour ta réponse si rapide et efficace.
Sans vouloir abuser de ton aide, pourrais-tu m'expliquer un petit peu ce que font les lignes de ton script ?
d'avance merci ;)
Piccolupo 13
21 août 2007 à 20:48
Merci beaucoup en tout cas,
Je te souhaite une bonne soirée et à bientôt!
Piccolupo13