Supprimer tous les espaces dans une chaîne en Python

je veux éliminer tous les espaces d'une chaîne, 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 élimine seulement l'espace blanc sur les deux côtés de la chaîne. Comment supprimer tous les espaces?

540
demandé sur Peter Mortensen 2011-11-25 17:51:21

9 réponses

si vous souhaitez supprimer les espaces de début et de fin, utilisez str.strip() :

sentence = ' hello  apple'
sentence.strip()
>>> 'hello  apple'

si vous souhaitez supprimer tous les espaces, utilisez str.replace() :

sentence = ' hello  apple'
sentence.replace(" ", "")
>>> 'helloapple'

si vous souhaitez supprimer les espaces dupliqués, utilisez str.split() :

sentence = ' hello  apple'
" ".join(sentence.split())
>>> 'hello apple'
1204
répondu Cédric Julien 2016-11-23 12:32:31

supprimer seuls les espaces utilisation str.replace :

sentence = sentence.replace(' ', '')

pour supprimer tous les caractères blancs (espace, onglet, newline, et ainsi de suite) vous pouvez utiliser split puis join :

sentence = ''.join(sentence.split())

ou une expression régulière:

import re
pattern = re.compile(r'\s+')
sentence = re.sub(pattern, '', sentence)

si vous voulez supprimer whitespace du début et de la fin que vous pouvez utiliser strip :

sentence = sentence.strip()

Vous pouvez également utiliser lstrip pour supprimer l'espace qu'au début de la chaîne, et rstrip pour supprimer l'espace à partir de la fin de la chaîne.

201
répondu Mark Byers 2014-01-20 23:45:37

une alternative est d'utiliser des expressions régulières et de faire correspondre ces étranges caractères d'espace blanc aussi. Voici quelques exemples:

supprimer tous les espaces dans une chaîne, même entre les mots:

import re
sentence = re.sub(r"\s+", "", sentence, flags=re.UNICODE)

supprimer les espaces au début d'une chaîne de caractères:

import re
sentence = re.sub(r"^\s+", "", sentence, flags=re.UNICODE)

supprimer les espaces à L'extrémité d'une chaîne de caractères:

import re
sentence = re.sub(r"\s+$", "", sentence, flags=re.UNICODE)

supprimer les espaces au début et à la fin d'une chaîne de caractères:

import re
sentence = re.sub("^\s+|\s+$", "", sentence, flags=re.UNICODE)

supprimer seulement les espaces en double:

import re
sentence = " ".join(re.split("\s+", sentence, flags=re.UNICODE))

(tous les exemples fonctionnent en Python 2 et Python 3)

61
répondu Emil Stenström 2018-07-26 08:55:52

espace comprend espace, onglets et CRLF . Ainsi, une élégante et one-liner fonction de chaîne de caractères que nous pouvons utiliser est traduire :

' hello  apple'.translate(None, ' \n\t\r')

OU si vous voulez être approfondie:

import string
' hello  apple'.translate(None, string.whitespace)
30
répondu MaK 2018-03-14 10:21:53

pour supprimer les espaces du début et de la fin, utilisez strip .

>> "  foo bar   ".strip()
"foo bar"
18
répondu wal-o-mat 2011-11-25 13:56:22
' hello  \n\tapple'.translate( { ord(c):None for c in ' \n\t\r' } )

MaK a déjà souligné la méthode" translate " ci-dessus. Et cette variation fonctionne avec Python 3 (voir ce Q&A ).

6
répondu Amnon Harel 2017-05-23 12:18:23
import re    
sentence = ' hello  apple'
re.sub(' ','',sentence) #helloworld (remove all spaces)
re.sub('  ',' ',sentence) #hello world (remove double spaces)
3
répondu PrabhuPrakash 2016-10-24 12:46:29

attention:

strip fait une bande et une bande (supprime les espaces de tête et de queue, les onglets, Les retours et les flux de forme, mais ne les enlève pas au milieu de la chaîne).

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

3
répondu yan bellavance 2018-03-14 10:19:01

en outre, bande a quelques variantes:

supprimer les espaces dans le début et la fin d'une chaîne de caractères:

sentence= sentence.strip()

supprimer les espaces au début d'une chaîne de caractères:

sentence = sentence.lstrip()

supprimer les espaces à L'extrémité d'une chaîne de caractères:

sentence= sentence.rstrip()

les trois fonctions de chaîne de caractères strip lstrip , et rstrip peuvent prendre les paramètres de la chaîne à la bande, avec la valeur par défaut étant tout l'espace blanc. Cela peut être utile lorsque vous travaillez avec quelque chose de particulier, par exemple, vous pourriez supprimer seulement les espaces mais pas les nouvelles lignes:

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

ou vous pouvez supprimer des virgules supplémentaires en lisant dans une liste de chaînes de caractères:

"1,2,3,".strip(",")
2
répondu Anna 2018-04-06 20:51:47