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 :

[Aide] Ajouter des espaces dans une chaine de caractère [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 9
    Points : 9
    Points
    9
    Par défaut [Aide] Ajouter des espaces dans une chaine de caractère
    Bonjour a tous !
    Jai un petit code a faire dans lequel je doit ajouter un espace tout les 4 caractèr.
    C'est un chapitre qui porte sur les divisions donc je doit les utiliser.

    Pour le moment j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def decoupeChaine(mot):
        '''Signature : Fonction decoupeChaine(ch : String) : String'''
        for i in range(13):
            if i%4==0 and i>0:
                mot = mot[:i] + " " + mot [i:]
        return mot
    print(decoupeChaine('01234567891011'))
    Le programme me retourne ça :
    0123 456 789 1011
    Je pense que l'erreur vient du fait qu'il compte l'espace dans i et qu'il ajoute donc un espace trop tôt.

    Si vous pouviez m'aider ça serait cool. Merci d'avance !

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Problème réglé !
    Au final j'ai trouvé, j'ai fait comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def decoupeChaine(mot):
        '''Signature : Fonction decoupeChaine(ch : String) : String'''
        motRep = ""
        for ind in range (14) :
            if ind % 4==0 and ind > 1:
                motRep = motRep + " " + mot[ind]
            else:
                motRep = motRep+ "" + mot[ind]
        return motRep
    print(decoupeChaine("01234567891011"))
    Mais si vous avez des idées pour améliorer ça je dis pas non ! ^^

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    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 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Salut,

    Citation Envoyé par Tim._. Voir le message
    Je pense que l'erreur viens du fait qu'il compte l'espace dans i et qu'il ajoute donc un espace trop tôt.
    Tout à fait.
    Une solution serait de créer une nouvelle chaine de caractères sans toucher au mot de départ.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Invité
    Invité(e)
    Par défaut
    Il existe plein de solutions sur Internet qui pourrait t'inspirer, même si ce n'est pas exactement ce que tu demandes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mot = "abcdefghijklmnopqrstuvwxyz"
    def split_by_n(seq, n):
        while seq:
            yield seq[:n]
            seq = seq[n:]        
    list(split_by_n(mot,4))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mot = "abcdefghijklmnopqrstuvwxyz"
    [mot[i:i+4] for i in range(0, len(mot), 4)]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mot = "abcdefghijklmnopqrstuvwxyz"
    list(map(''.join, zip(*[iter(mot)]*4)))
    #Le résultat est différent il n'y aura pas les 2 dernières lettres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import re
    mot = "abcdefghijklmnopqrstuvwxyz"
    re.findall('....',mot)
    #Idem le résultat est différent il n'y aura pas les 2 dernières lettres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    from itertools import zip_longest
    mot = "abcdefghijklmnopqrstuvwxyz"
    def grouper(iterable, n, fillvalue=None):
        args = [iter(iterable)] * n
        return zip_longest(*args, fillvalue=fillvalue)
    grouper(mot, 4)
    #Renvoie une liste de tuples

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 046
    Points : 1 376
    Points
    1 376
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foo = lambda s:len(s)>4 and s[:4]+" "+foo(s[4:]) or s
     
    print(foo("abcdefghijklmnopqrstuvwxyz"))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    abcd efgh ijkl mnop qrst uvwx yz

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

Discussions similaires

  1. [AC-2002] Gestion des espace dans une chaine de caracteres
    Par jobe3141 dans le forum VBA Access
    Réponses: 8
    Dernier message: 19/05/2011, 12h22
  2. [debutant] Faire des espaces dans une chaine de caracteres ?
    Par junior68 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/06/2009, 00h37
  3. [SQLSERVER 2K]Enlevé des espaces dans une chaine
    Par MeHo_ dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/07/2008, 16h51
  4. Supprimer les espaces dans une chaine de caractères
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 23/07/2007, 23h24
  5. [String] Ajouter des espaces à une chaine
    Par jake84 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 13/02/2006, 17h56

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