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.
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.
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 :
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...
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
Bonne continuation,
Fred
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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 >>> '123 4 5 6'.replace(' ', '') '123456'
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".
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 \d[0-9 ]+\d
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.
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
Si jamais tu n'as pas besoin, tu peux te contenter de
pour le remplacement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part re.sub(r'\d[0-9 ]+\d', remplace, txt)
Merci beaucoup oiffrig, cela marche très bien.![]()
Partager