p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre du Club
    Inscrit en
    mars 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 109
    Points : 43
    Points
    43

    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é Sénior

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

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : avril 2009
    Messages : 3 327
    Points : 4 751
    Points
    4 751

    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 du Club
    Inscrit en
    mars 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 109
    Points : 43
    Points
    43

    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 du Club
    Inscrit en
    mars 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 109
    Points : 43
    Points
    43

    Par défaut

    Pardon ce dernier fichier a été générer par windows

  5. #5
    Expert Confirmé Sénior


    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    1 696
    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 : 1 696
    Points : 4 457
    Points
    4 457
    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/) {
    Articles sur La programmation fonctionnelle en Perl : 1. les opérateurs de liste; 2. les fonctions d'ordre supérieur; 3. étendre le langage.
    Tutoriels De Perl 5 à Perl 6: 1. Les bases du langage; 2. Les nouveautés.

    ________
    Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés.

  6. #6
    Membre du Club
    Inscrit en
    mars 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 109
    Points : 43
    Points
    43

    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
    Expert Confirmé Sénior


    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    1 696
    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 : 1 696
    Points : 4 457
    Points
    4 457
    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.
    Articles sur La programmation fonctionnelle en Perl : 1. les opérateurs de liste; 2. les fonctions d'ordre supérieur; 3. étendre le langage.
    Tutoriels De Perl 5 à Perl 6: 1. Les bases du langage; 2. Les nouveautés.

    ________
    Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés.

  8. #8
    Expert Confirmé Sénior

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

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : avril 2009
    Messages : 3 327
    Points : 4 751
    Points
    4 751

    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
    Réponses: 11
    Dernier message: 23/11/2010, 12h47
  4. 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