IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[PERL]: Help script traitement fichier txt tabulaire


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [PERL]: Help script traitement fichier txt tabulaire
    Bonjour à tous,

    Je ne connais pas encore toute les possibilités offertes par Perl, et j'aurais besoin d'aide svp concernant un problème de traitement de fichier texte via un script Perl (et uniquement en Perl).

    Mon fichier texte (il s'agit d'un lexique) se présente sous la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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
    etc.

    (NB : les blancs entre les colonnes sont des tabulations.)

    J'aimerais dans un premier temps pourvoir opérer un tri sur la première colonne, c-à-d obtenir l'affichage suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    fait    ADJ     fait
    fait    NOM     fait
    fait    VER:conj        faire
    fait    VER:pper        faire
    faite   VER:pper        faire
    faites  VER:pres        faire
    faits   VER:pper        faire
    faitout NOM     faitout
    faitouts        NOM     faitout
    ensuite mon problème principal est le suivant: si j'ai une ligne où l'élément de la première colonne est répété
    (dans mon exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fait    ADJ     fait
    fait    NOM     fait
    fait    VER:conj        faire
    fait    VER:pper        faire
    )
    j'ai besoin de regrouper ces lignes en ne gardant que le mot de la première colonne mais en conservant les informations des colonnes 2 et 3 (des autres lignes) sur la première ligne, afin d'obtenir le format suivant (les blancs devant toujours être des tabulations) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fait    ADJ     fait	NOM     fait	VER:conj        faire	VER:pper        faire

    et j'ai besoin de faire ça dans tout mon fichier à chaque fois que ce cas de figure se présente (avec d'autres mots que "fait"), le tout dans un script...

    Pour l'instant j'en suis là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/usr/bin/perl -w
    while(<>)
    {
     
    }
    ...


    Je ne sais pas si je suis suffisamment clair, mais si quel'qu'un a une piste pour réaliser ça, ce serait sympa...
    Un grand merci d'avance pour vos suggestions !

    Amicalement,

    Piccolupo 13

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Piccolupo13 Voir le message
    Pour l'instant j'en suis là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/usr/bin/perl -w
    while(<>)
    {
     
    }
    ...
    C'est un peu léger... Normalement, on attend d'un demandeur qu'il fasse un peu plus d'effort, mais je suis de bonne humeur et ton problème est assez simple, je vais donc te donner une solution basé sur ce que j'ai compris (bien qu'il y ait quelques imprécisions, par exemple l'ordre dans la deuxième partie de ton programme).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #! /usr/bin/env perl
    use strict; use warnings;
     
    my %dict;
    while( <> ) {
       chomp;
     
       # on découpe la ligne selon les tabulations
       my @fields = split /\t/;
       # on met le premier champ dans $name et on le retire de @fields
       my $name = shift @fields;
       # on rajoute @fields à la liste des définitions associé à $name
       push @{$dict{$name}}, @fields;
    }
     
    for my $name (sort keys %dict) {
       print "$name\t", (join "\t", @{$dict{$name}}), "\n";
    }
    __END__
    --
    Jedaï

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonsoir Jedaï,

    Merci beaucoup pour ta réponse rapide malgré mes maigres efforts c'est vrai...
    Pour ma prochaine demande je me creuserai plus la tête avant de poster

    Encore merci,



    Piccolupo13

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. traitement fichier .txt
    Par steven78700 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 15/02/2011, 05h53
  2. [CSV] Traitement fichiers txt/csv avec php
    Par cirtey dans le forum Langage
    Réponses: 4
    Dernier message: 26/01/2007, 16h46
  3. Traitement fichier .txt (gestion des '','')
    Par clemasson dans le forum Access
    Réponses: 1
    Dernier message: 11/12/2006, 15h26
  4. [SQLServer]Script import fichier .txt
    Par Jenbi dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/08/2006, 16h49
  5. Optimiser traitement fichier [.txt]
    Par Metallic-84s dans le forum Langage
    Réponses: 14
    Dernier message: 16/03/2006, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo