Forum Programmation.perl spliter un fichier

Posté par . Licence CC By‐SA.
Étiquettes : aucune
-3
31
juil.
2015

Je dois code Perl qui split un fichier; Malheureusement, il ne remplit pas ma tâche. Je veux qu'il me retourne les colonnes avec "fault" en dessus en voici un exemple de fichier

------------------------------------DATA.csv-----------------------------------------------
 2015年07月23日 16:47:23
 false, false, true, false, true, false,
 defau, ame_a, ame_m, ame_uc, ame_f, ams_l, en_affi,
 true DPA01, fault, fault, fault, fault, fault, 1,
 false DPA02, , , , , fault, 1,
 false DPA03, fault, fault, olt, fault, fault, 1,
 false DPA01, fault, at, fault, 2, fault, 1,

jaimerai au finisch qu#il me revoi ceci

-------------------------------ame_a--------------------------------------
 ame_a, 
 fault, 
 , 
 fault, 
 fault,
--------------------------------ame_m----------------------------------------
 ame_m, 
 fault, 
 , 
 fault, 
 at, 
--------------------------------ame_f------------------------------------------
 ams_l, 
 fault, 
 , 
 fault, 
 2,
---------------------------------en_affi----------------------------------------
 en_affi, 
 1, 
 1, 
 1, 
 1,

voici mon code lui il ne peut que spliter le fichier sans faire de tri, peut etres quelqu'un ici pourrai me venir en aide.

use strict;
use feature qw(say);
use autodie qw(:all);
open(DATA, '<', 'DATA.csv');
scalar <DATA>;
my @header = split /\s*,\s*/, <DATA>;
chomp $header[-1];
my @outputFHs;
for (1..@header-1) {
 open $outputFHs[$_], ">", "file$_";
 say {$outputFHs[$_]} "$header[$_]:";
}
while (<DATA>) {
 chomp;
 next unless length;
 my @cols = split /\s*,\s*/;
 for my $colNo (1..@header-1) {
 say {$outputFHs[$colNo]} "$cols[0] : $cols[$colNo]";
 }
}
  • # Je comprends pas...

    Posté par (site web personnel) . Évalué à 1.

    Tu dois envoyer ton fichier en Croatie ?? Vraiment, c'est étrange comme requête...

    Les logiciels de traitement de texte sont à la rédaction ce que la 2CV est à l'automobile, une vieille voiture dont on se souvient avec nostalgie mais technologiquement dépassée

  • # Utilise un module

    Posté par (site web personnel) . Évalué à 3.

    Le CSV, ça peut vite être compliqué, donc prend un module qui va t'aider à le parser proprement, après t'auras plus grand chose à faire, et tu pourras accéder aux cellules plus facilement.

    Je dirais que celui-ci irait bien : https://metacpan.org/pod/Parse::CSV

    Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.

    • [^] # Re: Utilise un module

      Posté par . Évalué à -6.

      ce ducument est le resultat d'un parsage et comme je l'ai dit si tu essaye le code plus haut il va le decoupe en plusieurs fichier, le probleme c#est comment faire pour effectuer le tri c'est a dire
      me revoyer les colonnes avec false en dessus. donc je ne vois pas du tout ce qu'un parsage a encore a chercher ici.

      • [^] # Re: Utilise un module

        Posté par . Évalué à -6. Dernière modification le 31 juillet 2015 à 23:20.

        je vois que ma question menace, es ce que quelqu#un peu donc faire a ce qu#il me revoit juste les noms d'ou il ya le "false" en dessus.
        dans le cas present il devrai me renvoyer
        ame_a
        ame_m

        ame_f

        en_affi

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.