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

  1. #1
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 157
    Points : 80
    Points
    80
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    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.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  3. #3
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 157
    Points : 80
    Points
    80
    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 régulier
    Inscrit en
    Mars 2010
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 157
    Points : 80
    Points
    80
    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
    Points : 12 469
    Points
    12 469
    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 régulier
    Inscrit en
    Mars 2010
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 157
    Points : 80
    Points
    80
    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

  7. #7
    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
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par africanwinners Voir le message

    je sais pas pourquoi quand je fais le test sur \.xml ca remplace tous les "_"
    Comme Philou et moi-même te l'avons signalé, le test correct est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($ligne =~ /\.xml/) { # ...
    Le point ayant une signification particulière dans une regex (caractère quelconque sauf saut de ligne), il faut le précéder d'un caractère d'échappement (le "\") pour reconnaître littéralement un point.

  8. #8
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    Cela dit, je répète que même sans les corrections proposées, le script proposé à l'origine fonctionnait sur ma plateforme.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

+ 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