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 :

Suppression d'espaces entre des chiffres


Sujet :

Python

  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Suppression d'espaces entre des chiffres
    Bonjour,
    je voudrais tranformer simplement dans un texte des expressions comme "12 3 45 6" en "123456".

    Quelqu'un a-t-il une solution simple et élégante ?

    Par avance merci pour toute info.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2008
    Messages : 53
    Par défaut
    Bonjour,

    Je suis pas un grand champion mais il existe une méthode qui s'appelle "rstrip" qui fait ça très bien.

    syntaxe : chaine_traitée = chaine_a_traiter.rstrip('caractère_à_enlever')

    soit dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    expression_a_traiter = '12 3 45 6'
     
    expression_traitee = expression_a_traiter.rstrip(' ')   # ce que tu enlève et qui est donc défini entre les parenthèses est un espace)
    print expression_traitee
    Je ne peux pas tester mon code car je n'ai pas python sur ce pc alors j'espère que mon code est sans erreur...
    Bonne continuation,

    Fred

  3. #3
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    les fonctions strip supprime en début/fin de chaînes.
    Pour supprimer les espaces, utilises plutôt la fonction replace http://python.developpez.com/faq/?pa...ing#strReplace

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2008
    Messages : 53
    Par défaut
    Autant pour moi, en effet, je m'en étai servi pour retirer des '\n' à la fin de lignes...
    Désolé pour l'erreur, je testerai mon code à l'avenir.

    Fred

  5. #5
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >>> '123 4 5  6'.replace(' ', '')
    '123456'

  6. #6
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Oups c'est plus compliqué en fait...
    Mon exemple était maladroit. En fait ce que je souhaite faire c'est remplacer "du texte avec des espaces 12 3 45 6 encore du texte avec des espaces" par "du texte avec des espaces 123456 encore du texte avec des espaces".

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Les regex (module re) permettent de faire ça facilement, puisque la méthode sub peut prendre une fonction comme paramètre, et la fonction pourra remplacer à sa guise :
    Déjà, l'expression régulière à utiliser, tu veux repérer un bloc qui commence par un chiffre, contient ensuite uniquement des chiffres ou des espaces, et finit par un chiffre. La traduction :
    \d c'est un chiffre, [0-9 ] c'est un chiffre ou un espace, le + c'est pour lui dire qu'il y en a au moins un.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> import re
    >>> def remplace(m):
    ...     return m.group(0).replace(' ', '')
    ...
    >>> rx = re.compile(r'\d[0-9 ]+\d')
    >>> txt = "du texte avec des espaces 12 3 45 6 encore du texte avec des espaces"
    >>> print rx.sub(remplace, txt)
    du texte avec des espaces 123456 encore du texte avec des espaces
    La fonction de remplacement prend en paramètre un MatchObject, prend son groupe 0 (tout le bloc correspondant au motif), y enlève les espaces et renvoie le résultat. La compilation (re.compile) n'est pas nécessaire si tu n'utilises que ponctuellement ce procédé, mais elle permet d'optimiser.
    Si jamais tu n'as pas besoin, tu peux te contenter de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    re.sub(r'\d[0-9 ]+\d', remplace, txt)
    pour le remplacement.

  8. #8
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Merci beaucoup oiffrig, cela marche très bien.

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

Discussions similaires

  1. Insérer automatiquement un espace entre deux chiffres
    Par mosta2010 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/06/2008, 08h03
  2. Espace entre les chiffres
    Par arnest dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/01/2008, 13h41
  3. Espacement entre des <div> générés en PHP
    Par VincentG dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 07/04/2007, 20h30
  4. string.format : mettre un espace entre deux chiffres
    Par SOPRA-Eherve dans le forum VB.NET
    Réponses: 2
    Dernier message: 06/03/2007, 14h55
  5. Réponses: 17
    Dernier message: 13/11/2006, 11h55

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