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 :

Recherche du caractère "³" dans un fichier texte


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Points : 10
    Points
    10
    Par défaut Recherche du caractère "³" dans un fichier texte
    Bonjour,

    Je m'excuse si ma demande parait simple pour quelques uns mais je débute avec Perl et j'ai un problème en recherchant un caractère spécial dans un fichier texte à l'aide de mon script.
    Voila je veux trouver cette chaine "³R³" dans une ligne qui ne contient pas le caractère "#" et le caractère "*" dans mon fichier texte cible pour ce faire j'utilise ce bout de code et ça fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    open (FICHIER,"<$txtprotfile_path");
    	while($Ligne = <FICHIER>) 
    	{
    		my $car = substr($Ligne,24,3);
    		my $speed_car = substr ($Ligne,47,5);
    		if (!($Ligne =~ "\\*") && !($Ligne =~ "#") && ($car eq "R"))
    		{
    			$speed = $speed_car;
    			$test = 1;
    		}
    	}

  2. #2
    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 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Ton expression régulière ne marche certainement pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!($Ligne =~ "\\*") && !($Ligne =~ "#") ...
    Essaie plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( $Ligne !~ /\*/ and  $Ligne !~ /#/) ...
    Pour la seconde partie ( "³R³"), je ne suis pas sûr, mais je doute qu'il faille mettre des back slashes, je pencherais plutôt pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... and $car eq "³R³")

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Merci pour la réponse pour la première partie ca marche nikel mais pour ce qui est du caractère "³" ca fonctionne tjr pas. J'ai tester sans "\" et ca marche pas.

  4. #4
    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 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Le truc, c'est que j'ai essayé de tester pour ces "³R³" et ça marche pour moi, mais comme j'utilise la même chose pour encoder ma chaîne à tester et mon test, c'est assez normal que ça marche dans mon cas. Peux-tu fournir quelques lignes de ton fichier en entrée (en pièce jointe, pas en copier-coller) pour pouvoir tester sur un fichier réel? Il y a peut-être un problème d'encodage (UTF8, Unicode).

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Voici une partie du fichier d'entré
    Fichiers attachés Fichiers attachés

  6. #6
    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 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    j'ai essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    use UTF8;
    open (FICHIER,"<", "fichier_entre.TXT");
    while($Ligne = <FICHIER>) 
    {
    	my $car = substr($Ligne,24,3);
    	my $speed_car = substr ($Ligne,47,5);
    	if ( $Ligne !~ /\*/ and  $Ligne !~ /#/ and $car eq "³R³")
    	{
    		$speed = $speed_car;
    		$test = 1;
    		print "Success\n"
    	}
    }
    Et ça m'a bien imprimé Success une fois sur ton fichier de test, ce qui prouve que la comparaison a marché sur une ligne du fichier (a priori l'avant-dernière).

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/08/2023, 14h49
  2. Réponses: 5
    Dernier message: 08/09/2014, 15h07
  3. Réponses: 4
    Dernier message: 09/10/2011, 16h17
  4. Réponses: 3
    Dernier message: 25/07/2006, 08h40

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