1054 votes

Python supprime tous les espaces dans une chaîne de caractères

Duplicata possible :
Comment couper les espaces blancs (y compris les tabulations) ?

Je veux éliminer tous les espaces d'une chaîne de caractères, aux deux extrémités et entre les mots.

J'ai ce code Python :

def my_handle(self):
    sentence = ' hello  apple  '
    sentence.strip()

Mais cela n'élimine que les espaces blancs des deux côtés de la chaîne. Comment supprimer tous les espaces ?

13 votes

À quoi doit ressembler votre résultat ? hello apple ? helloapple ?

4 votes

@JoachimPileborg, pas exactement je pense, car il s'agit aussi de réduire les espaces blancs entre les mots.

6 votes

Helloapple doit être ma sortie

9voto

Amnon Harel Points 121
' hello  \n\tapple'.translate({ord(c):None for c in ' \n\t\r'})

MaK a déjà indiqué la méthode "translate" ci-dessus. Et cette variante fonctionne avec Python 3 (voir cette Q&R ).

2 votes

Merci. Ou bien, xxx.translate( { ord(c) :None for c in string.whitespace } ) pour la rigueur.

7voto

Anna Points 952

En outre, strip a quelques variantes :

Supprime les espaces au DEBUT et à la FIN d'une chaîne de caractères :

sentence= sentence.strip()

Supprime les espaces au DÉBUT d'une chaîne de caractères :

sentence = sentence.lstrip()

Supprime les espaces à la FIN d'une chaîne de caractères :

sentence= sentence.rstrip()

Les trois fonctions de la chaîne strip lstrip et rstrip peut prendre en paramètre la chaîne à dépouiller, la valeur par défaut étant l'espace blanc. Cela peut être utile lorsque vous travaillez avec quelque chose de particulier, par exemple, vous pouvez supprimer uniquement les espaces mais pas les nouvelles lignes :

" 1. Step 1\n".strip(" ")

Vous pouvez également supprimer les virgules supplémentaires lors de la lecture d'une liste de chaînes :

"1,2,3,".strip(",")

6voto

yan bellavance Points 1542

Faites attention :

strip fait un rstrip et un lstrip (supprime les espaces avant et arrière, les tabulations, les retours et les form feeds, mais ne les supprime pas au milieu de la chaîne).

Si vous ne remplacez que les espaces et les tabulations, vous pouvez vous retrouver avec des CRLF cachés qui semblent correspondre à ce que vous recherchez, mais qui ne sont pas les mêmes.

0 votes

Bien que ce soit un bon point, ce n'est pas vraiment une réponse et devrait être un commentaire à moins que vous ne fournissiez une solution. Pourriez-vous fournir une solution car c'est exactement ce que je recherche ? Salutations

5voto

handle Points 355

élimine tous les espaces blancs d'une chaîne, aux deux extrémités et entre les mots.

import re re.sub("\s+", # one or more repetition of whitespace '', # replace with empty string (->remove) ''' hello ... apple ... ''') 'helloapple'

Docs Python :

0 votes

Je sais. re a été suggéré auparavant, mais j'ai trouvé que la réponse réelle au titre de la question était un peu cachée parmi toutes les autres options.

2voto

PrabhuPrakash Points 136
import re    
sentence = ' hello  apple'
re.sub(' ','',sentence) #helloworld (remove all spaces)
re.sub('  ',' ',sentence) #hello world (remove double spaces)

4 votes

La question était de supprimer tous les espaces blancs, ce qui inclut les tabulations et les caractères de nouvelle ligne, cet extrait ne supprimera que les espaces normaux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X