web-dev-qa-db-fra.com

Supprimer tous les espaces d'une chaîne dans Python

Je veux éliminer tous les espaces d'une chaîne, des deux côté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 des deux côtés de la chaîne. Comment puis-je supprimer tous les espaces?

681
co2f2e

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'
1472
Cédric Julien

Pour supprimer uniquement les espaces , utilisez str.replace :

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

Pour supprimer tous les caractères d'espacement (espace, tabulation, nouvelle ligne, etc.), vous pouvez utiliser split alors 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 souhaitez supprimer uniquement les espaces du début et de la fin, vous pouvez utiliser strip :

_sentence = sentence.strip()
_

Vous pouvez également utiliser lstrip pour supprimer les espaces blancs uniquement au début de la chaîne, et rstrip pour supprimer les espaces blancs à la fin de la chaîne. chaîne.

240
Mark Byers

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

Supprime TOUS les espaces d'une chaîne, même entre mots:

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

Supprime les espaces dans le début d'une chaîne:

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

Supprime les espaces dans le FIN d'une chaîne:

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

Supprime les espaces à la fois dans le début et la fin d'une chaîne:

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

Supprimer SEULEMENT les espaces DUPLICATE:

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

(Tous les exemples fonctionnent à la fois dans Python 2 et Python 3)

81
Emil Stenström

Les espaces blancs incluent espace, onglets et CRLF. Ainsi, une fonction de chaîne élégante et one-liner que nous pouvons utiliser est traduire:

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

OU si vous voulez être approfondi:

import string
' hello  Apple'.translate(None, string.whitespace)
36
MaK

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

>> "  foo bar   ".strip()
"foo bar"
18
wal-o-mat
' hello  \n\tapple'.translate( { ord(c):None for c in ' \n\t\r' } )

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

6
Amnon Harel

Faites attention:

strip effectue une première bande et une petite bande (supprime les espaces de début à la fin, les tabulations, les retours et les sauts de formulaire, mais ne les supprime pas au milieu de la chaîne).

Si vous ne remplacez que des espaces et des tabulations, vous pouvez vous retrouver avec des CRLF masqués qui semblent correspondre à ce que vous recherchez, mais ne sont pas identiques.

4
yan bellavance
import re    
sentence = ' hello  Apple'
re.sub(' ','',sentence) #helloworld (remove all spaces)
re.sub('  ',' ',sentence) #hello world (remove double spaces)
3
PrabhuPrakash

De plus, strip présente quelques variantes:

Supprime les espaces dans le début et la fin d'une chaîne:

sentence= sentence.strip()

Supprime les espaces dans le début d'une chaîne:

sentence = sentence.lstrip()

Supprime les espaces dans le FIN d'une chaîne:

sentence= sentence.rstrip()

Les trois fonctions de chaîne striplstrip, et rstrip peuvent prendre les paramètres de la chaîne à défaire, la valeur par défaut étant tous les espaces. 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(" ")

Ou vous pouvez supprimer des virgules lors de la lecture d'une liste de chaînes:

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