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 :

decouper une chaine


Sujet :

Python

Vue hybride

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Par défaut decouper une chaine
    Bonjour,

    Je souhaites ajouter un caractère (espace) dans une chaine de caractère toutes les 5 lettres !!!!

    Origine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    message="monbutestderajouterunespacedanscettechainetoutelescinqlettres"
    Objectif:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    message="monbu testd erajo uteru nespa cedan scett echai netou teles cinql ettres"

    J'ai pensé a mettre le message d'origine dans une liste puis d'ajouter un caractère tout les modulo 5 de la chaine, mais sans succes.

    Merci de votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    message = ' '.join(message[i:i+5] for i in range(0,len(message),5))
    Le principe est simple: découper la chaîne en une sous-chaines de 5 caractères (ici à l'aide d'un générateur, tant qu'à faire; on peut aussi utiliser une compréhension de liste) et les recoller ensemble en les séparant par un espace.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Par défaut
    En fait j'ai un traitement et j'obtiens un résultat sous forme de liste.
    Je me suis mal exprimé, en fait je réitère ma question:

    Comment ajouter un élément tout les 5 élément d'une liste ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    La réponse à ta dernière question est
    ' '.join(...)
    Sinon tu peux aussi passer par re ou textwrap comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import re
    re_slice=lambda s: re.findall(r'.{1,5}', s)
     
    import textwrap
    wrap_slice=lambda s: textwrap.wrap(s, 5)
     
    def add_space(msg, method):
        return ' '.join(method(msg))
     
    if __name__ == '__main__':
        message="monbutestderajouterunespacedanscettechainetoutelescinqlettres"
        print add_space(message, re_slice)
        print add_space(message, wrap_slice)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Dans cet exemple, j'ajoute "coucou" tout les 5 éléments, mais bon rien à voir avec ta 1ere question

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    message=list("monbutestderajouterunespacedanscettechainetoutelescinqlettres")
    for i in range(0, len(message)-1, 5):
    	if i!=0:
    		message[i]="coucou"
    print "".join(message)

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Une méthode bien tordue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> message="monbutestderajouterunespacedanscettechainetoutelescinqlettres"
    >>> l = list(message)
    >>> for i in range(5, len(l)+(len(l)-1)/5, 6):
    ...     l.insert(i, ' ')
    ... 
    >>> print ''.join(l)
    monbu testd erajo uteru nespa cedan scett echai netou teles cinql ettre s
    C'est pour rire mais ça fonctionne

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    en fait je réitère ma question:

    Comment ajouter un élément tout les 5 élément d'une liste ?

    Salut,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    li = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,17,18,19,20,
          21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]
     
    raj = ('ceruse','pizza','cigare','grognon','Blanche-Neige',
           'droguerie','cypres','chaleur','moustique','griotte')
     
    SL = []
    for i in xrange(0,len(li),5):
        SL.extend( li[i:i+5] + [raj[i/5]] )
     
    print SL

    [1, 2, 3, 4, 5, 'ceruse', 6, 7, 8, 9, 10, 'pizza', 11, 12, 13, 14, 15, 'cigare', 6, 17, 18, 19, 20, 'grognon', 21, 22, 23, 24, 25, 'Blanche-Neige', 26, 27, 28, 29, 30, 'droguerie', 31, 32, 33, 34, 35, 'cypres', 36, 37, 'chaleur']

  8. #8
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Il y a plein de solutions, je propose la mienne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in range(0, len(message)-1, 5):
    	print message[i:i+5]
    Edit : grilled

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

Discussions similaires

  1. [Tableaux] decouper une chaine de caractères
    Par pekka77 dans le forum Langage
    Réponses: 12
    Dernier message: 03/12/2005, 19h08
  2. Découper une chaine ....
    Par webspeak dans le forum Linux
    Réponses: 8
    Dernier message: 07/11/2005, 15h12
  3. Réponses: 5
    Dernier message: 03/02/2005, 13h59
  4. decouper une chaine de caractere
    Par tibobao dans le forum ASP
    Réponses: 4
    Dernier message: 06/12/2004, 12h26
  5. langage] Découper une chaine suivant un délimiteur
    Par totox17 dans le forum Langage
    Réponses: 2
    Dernier message: 25/11/2002, 16h25

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