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

Python Discussion :

Soucis d'algo chaine de caractère


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Par défaut Soucis d'algo chaine de caractère
    Bonjour à tous,

    voila je suis bloqué depuis déjà un bon moment sur une question d'algo, je voudrais récupérer le dernier caractère d'une chaine de caractère qui en contient plusieurs occurences, exemples: je veux récupérer le dernier caractère "(", soit celui qui est en rouge dans l'exemple "((...))..()"


    Voici mon 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
    30
    31
    32
    33
    34
    35
    36
    seq="AUCGUCGAUC"
     
    struct="(()).(...)"
     
     
    if len(seq) != len(struct):
    	print('ERREUR LA SEQUENCE ET LA TAILLE DU MOTIF DOIVENT AVOIR LA MEME TAILLE')
    	print('\n')
    	print('La sequence a une taille de :', len(seq))
    	print('La structure a une taille de :', len(struct))
    	print ('\n')
     
    x=' '
     
    First=0
    i=0
    j=0
    LastPosition=0
     
    for i, el in enumerate(struct):
    	while (el=='(') and  (i <= len(struct)):
    			LastPosition=i
     
    			#struct = struct.replace(el," ")
    			break	
     
    print ('Le dernier ( est a la position : ', LastPosition)
     
    for LastPosition, el in enumerate(struct):
    		if el==')':
    			First = LastPosition
     
    			#struct = struct.replace(el," ")
    print ('Le premier ) est a la position : ',First)
     
    print struct

    Dans la première partie du code j'arrive à récupérer la position du dernier élement et à l'afficher en la stockant dans ma variable "LastPosition", mais je voudrais récupérer le caractère (et non la position), car je voudrais supprimer ce caractère apres l'avoir récupérer, si je fais un struct = struct.replace('(', "") je vais supprimer toutes les occurences de '(', voila pourquoi je voudrais récupérer ce caractère pour le supprimer ensuite. J'espère que c'est pas trop flou

    Merci à vous

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Tout d'abord, tu peux parcourir une chaine (ou liste) en sens descendant.

    >>> for i in range(len(ch)-1, 0, -1):
    ... print ch[i]
    ...
    f
    e
    d
    c
    b
    Ensuite tu veux connaitre le caractère et non sa position or ton code dit que tu cherches un caractère spécifique, que tu connais déjà donc.

    ???

    En tout état de cause, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    caractère = struct.pop(i)
    ce qui aura pour effet de supprimer le caractère en question et tu le récupéreras dans ta variable 'caractère'.

    Non ?

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    Citation Envoyé par VinsS Voir le message
    En tout état de cause, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    caractère = struct.pop(i)
    ce qui aura pour effet de supprimer le caractère en question et tu le récupéreras dans ta variable 'caractère'.

    Non ?
    un pop() sur un string ???

  4. #4
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Eh eh, non, pas de (pape du) pop en string (puisqu’elles sont immutable…)

    Par contre, un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct = "".join((struct[:i], struct[i+1:]))
    …suffit à se débarrasser de l’importun caractèr(i)e(l)

  5. #5
    Membre chevronné Avatar de Pierre Maurette
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 283
    Par défaut
    Bonjour,
    - Si on se fiche de connaitre i:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct = ''.join(struct.rsplit('(', 1))
    épicétou.

    - Si on veut également i:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cut = struct.rsplit('(', 1)
    i, struct = len(cut[0]), ''.join(cut)

  6. #6
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut pop pop pidou
    Ben oui pop...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> struct = "(()).(..a.)"
    >>> l = list(struct)
    >>> l.pop(struct.rfind('a'))
    'a'
    >>> struct = ''.join(l)
    >>> struct
    '(()).(...)'
    Bon.. Ok --->[]

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Réponses: 0
    Dernier message: 20/12/2011, 06h55
  3. Comparer deux chaine de caractères (vérification de mon algo svp)
    Par beegees dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 09/10/2007, 01h10
  4. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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