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 :

[langage] remplacer les caractères d'une chaine


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 48
    Points
    48
    Par défaut [langage] remplacer les caractères d'une chaine
    Bonjour je suis débutante en Perl, et j'aimerai connaître la fonction Perl qui permet de remplacer certains caractères pas d'autres caractères ( qui correspond à la fonction str_replace en php).

    Par exemple, je veux remplacer le A en U, le U en A, le G en C et le C en G.

    soit ACGUCGA en UGCAGCU

    merci beaucoup!

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 62
    Points : 59
    Points
    59
    Par défaut
    Salut,

    Je crois que tu peux utiliser une des grandes forces de perl: Les expressions régulières.
    Par exemple
    change les A en U.
    Pour avoir des infos, va ici: http://www.lhullier.org/publications/intro_perl/chapitre10.html
    Dis moi si tu y arrives! Bon courage!

    Matthieu

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    merci de ta réponse mais je n'y arrive toujours pas!

    car je ne vois pas comment il faut insérer s/A/U.

    perlaud

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 62
    Points : 59
    Points
    59
    Par défaut
    tu peux essayer quelque chose comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $chaine="ACGUCGA";
    $chaine=~s/A/U;
    print $chaine;
    Un truc comme ca. essaye et dis moi ce que ca fait!
    Attention: code non testé!

    Matthieu

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 52
    Points : 54
    Points
    54
    Par défaut
    Bonjour !
    ce que tu cherches, c'est plutôt l'opérateur tr qui s'utilise comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $string =~ tr/ACGUCGA/UGCAGCU/

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 10
    Points : 12
    Points
    12
    Par défaut Re: remplacer les caractères d'une chaine
    ...
    Par exemple, je veux remplacer le A en U, le U en A, le G en C et le C en G.
    Bonjour,
    mon explication va te paraitre un chouillat mathématique mais bon ton énnoncé me parait un peu ... biologique (ADN)

    Soit $adn ta chaine de caractères à convertir.
    Explications :
    =~ veut dire ressemble à ...
    tr pour translate
    g pour global

    => ce qui donne en français : si ma chaine de caractères $adn contient les caractères A, U, G, ou C (1er motif) alors traduit moi cette chaine en remplaçant A par U ... et ce tant qu'il y a des occurences du motif (option g)

    Voilà c'est tout.

    A++

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 62
    Points : 59
    Points
    59
    Par défaut
    ah oui, c'est ca....
    je savais bien qu'il y avait un truc qui faisait ca...

    Matthieu

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    Ca ne marche tjrs pas!!

    Voici, l'erreur qu'il m'indique:

    File "Macintosh HD:Users:audreyocuments:valeur_thermodynamique.pl"; Line 50: Bareword found where operator expected near "tr/ACGU/UGCA/g"

    File "Macintosh HD:Users:audreyocuments:valeur_thermodynamique.pl"; Line 50: syntax error near "tr/ACGU/UGCA/g"

    perlaud

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 52
    Points : 54
    Points
    54
    Par défaut
    il faut enlever le g.
    ca devrait lui regler son compte !

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    c'est vrai ... sans le g c'est mieux ...
    ça m'apprendra à ne pas tester le code que je fourni ...

    désolé ;-)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    J'ai encore un problème, en fait, je n'arrive pas à "remplacer" les 4 caractères en même temps!

    Voici ce que j'ai codé:

    $chaine="ACGGUACGCGCGCGU";
    $chaine=~tr/A/U/;
    $chaine=~tr/U/A/;
    $chaine=~tr/G/C/;
    $chaine=~tr/C/G/;

    print $chaine ."\n";

    et voici ce que j'obtiens:

    AGGGAAGGGGGGGGA

    Donc ca change bien A en U mais après, ça rechange U en A ( idem pour G et C). Comment faire pour éviter ça?

    merci

    perlaud

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 62
    Points : 59
    Points
    59
    Par défaut
    Salut
    C'est logique que le code que tu donnes fasse AGGGAAGGGGGGGGA.
    En revanche le tr:
    de schnecke devrait marcher...
    Ca donne quoi comme résultat avec le tr? et met ton code pour qu'on voit si ce n'est pas autre chose...

    Matthieu

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    Ok, super ça marche

    merci beaucoup à tous!

  14. #14
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    ... pense à mettre ce topic Résolu

    A++

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    Ok, super ça marche

    merci beaucoup à tous!

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/04/2011, 15h11
  2. Réponses: 3
    Dernier message: 28/03/2008, 18h00
  3. remplacer les boutons du formulaire par une image
    Par HwRZxLc4 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 30/08/2007, 21h00
  4. Extraire les n premiers termes d'une chaine
    Par knecmotet dans le forum C++
    Réponses: 4
    Dernier message: 03/03/2005, 15h05
  5. [langage] remplacer les %3A, %2F...
    Par ma2th dans le forum Langage
    Réponses: 2
    Dernier message: 13/08/2004, 11h04

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