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 :

éliminer un caractère


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 157
    Par défaut éliminer un caractère
    bonsoir

    J'ai fais un script qui permet d'éliminer le caractère _

    mais le problème que malgré que j'ai fais un test pour ne pas éliminer le "_" quand dans la ligne il y a la chaine ".xml", ca ne marche pas et ca n'élimine plus les "_".

    ex du fichier à traiter:
    as_2001_000207ar.xml
    économie_politique ;sujets_anthropologiques ;rapports_de_pouvoir
    as_2001_000211ar.xml
    hégémonie_familiale ;projet_familial
    ....

    voila le code

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     
    #!/usr/bin/perl
     
    print "bonjour\n";
    open(FIC, $ARGV[0]);
     
     
    print "choisis un nom de fichier de sortie\n";
     
    my $fic2=<STDIN>;
    open(FIC2, ">$fic2");
     
     
     
    while (<FIC>) {
    my $ligne=$_;
     
    if ($ligne=~/.xml/){
     
    print FIC2 $ligne;
     
    }
    else {
    $ligne=~s/_/ /g;
    print FIC2 $ligne;}
     
     
    }
    ca n'élimine pas les "_", je crois qu"il considère chaque deux lignes comme une seule ligne!!!

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Deux petites corrections qui ne devraient pas corriger votre problème, mais qui sont à mon sens indispensables :

    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chomp(my $fic2=<STDIN>);
    et

    =>
    Concernant ton soucis, le fichier à traiter a-t-il été généré sur le même système que celui où tu lances le script (exemple : windows et windows ou linux et linux) ?

    Edit : en tout cas, chez moi, ton script fonctionne tel quel.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 157
    Par défaut
    Bonjour

    C'est pas moi qui a générer ce fichier, il a peut être été générer par un système linux!! et moi je travaille avec windows

    C'est la première fois que j'ai ce genre de problème

    J'attends votre aide, merci

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 157
    Par défaut
    Pardon ce dernier fichier a été générer par windows

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Essaie ceci:

    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
    20
    21
    22
    23
    24
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my $fichier = shift;
    chomp $fichier;
    print "bonjour\n";
    open FIC, "<", $fichier or die "Impossible d'ouvrir le fichier $fichier $! \n";
     
    print "choisis un nom de fichier de sortie\n";
     
    my $fic2=<STDIN>;
    chomp $fic2;
    open FIC2, ">", $fic2 or die "Impossible d'ouvrir le fichier $fic2 $! \n";;
     
    while (my $ligne =<FIC>) {
    	if ($ligne =~ /\.xml/) {
    		print FIC2 $ligne;
    	}
    	else {
    		$ligne=~s/_/ /g;
    		print FIC2 $ligne;
    	} 
    }
    Avec les données suivante en entrée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cat test_.txt
    as_2001_000207ar.xml
    économie_politique ;sujets_anthropologiques ;rapports_de_pouvoir
    as_2001_000211ar.xml
    hégémonie_familiale ;projet_familial
    j'obtiens le fichier de sortie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cat out.txt
    as_2001_000207ar.xml
    économie politique ;sujets anthropologiques ;rapports de pouvoir
    as_2001_000211ar.xml
    hégémonie familiale ;projet familial
    La correction la plus importante est celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($ligne =~ /\.xml/) {

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 157
    Par défaut
    Merci pour votre aide si précieuse

    j'ai reformulé mon programme
    j'ai mis le fichier dans un tableau @a

    ensuite j'ai testé au lieu de je sais pas pourquoi quand je fais le test sur \.xml ca remplace tous les "_"


    alors
    j'ai inversé le test sur le ; et ça marche

    voila ma solution
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #!/usr/bin/perl
     
    print "bonjour\n";
    open(FIC, $ARGV[0]);
     
      my @a = ();
     
     
    print "choisis un nom de fichier\n";
     
    chomp(my $fic2=<STDIN>);
    open(FIC2, ">$fic2");
     
     
     
    #---------------------------------------------------
    # initialisation des variables
    #---------------------------------------------------
     
     
     
     
     
     
    $i=0;
     
    while (<FIC>) {
    my $ligne=$_;
     
    $a[$i]=$ligne;
     
    $i++;
    }
     
    foreach my $c(@a){
     
    if ($c=~/;/){
    $c=~s/_/ /g;
    print FIC2 "$c";
    }
    else{
     
     
    print FIC2 "$c";}
     
    }
    Merci à tous

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

Discussions similaires

  1. éliminer des caractères d'une chaine.
    Par cal123 dans le forum Langage
    Réponses: 6
    Dernier message: 16/01/2011, 19h26
  2. èliminer des caractères à l' objet String
    Par sonia5 dans le forum Langage
    Réponses: 7
    Dernier message: 06/12/2010, 16h06
  3. éliminer les doublons d'une chaîne de caractères
    Par Nayra dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 23/11/2010, 12h47
  4. [RegEx] Éliminer certaines balises d'une chaine de caractères
    Par Manuxy dans le forum Langage
    Réponses: 4
    Dernier message: 09/09/2009, 15h14
  5. Pb pour éliminer les caractères alpha
    Par chouffe dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/12/2005, 11h59

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