Question Supprimer tout espace dans une chaîne en Python


Je veux éliminer tout l'espace 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 ne fait qu'éliminer les espaces blancs des deux côtés de la chaîne. Comment puis-je supprimer tous les espaces?


513
2017-11-25 13:51


origine


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 voulez supprimer tous les espaces, utilisez str.replace():

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

Si vous souhaitez supprimer des espaces dupliqués, utilisez str.split():

sentence = ' hello  apple'
" ".join(sentence.split())
>>> 'hello apple'

1142
2017-11-25 13:56



Retirer seulement des espaces utilisation str.replace:

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

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

sentence = sentence.strip()

Vous pouvez aussi utiliser lstrip pour supprimer des espaces uniquement à partir du début de la chaîne, et rstrip pour supprimer les espaces à la fin de la chaîne.


191
2017-11-25 13:54



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

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

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

Supprimer des espaces dans le début d'une chaîne:

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

Supprimer les espaces dans la fin d'une chaîne:

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

Supprimer les espaces à la fois au début et à la fin d'une chaîne:

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

Supprimer uniquement les espaces DUPLICATA: 

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

(Tous les exemples fonctionnent dans Python 2 et Python 3)


55
2018-02-19 13:05



Les espaces blancs comprennent espace, onglets et CRLF. Donc, un élégant et bon mot fonction de chaîne, nous pouvons utiliser est Traduire:

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

OU si vous voulez être complet:

import string
' hello  apple'.translate(None, string.whitespace)

28
2017-11-28 03:36



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

>> "  foo bar   ".strip()
"foo bar"

16
2017-11-25 13:56



' 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 cette Q & A).


4
2017-09-26 09:54



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

2
2017-10-24 12:46



Faites attention:

strip fait un rstrip et un lstrip (supprime les espaces de début et de fin, les onglets, retourne et forme les flux, mais ne les supprime pas au milieu de la chaîne).

Si vous remplacez uniquement 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 identiques.


2
2017-11-12 19:30



En outre, bande a quelques variations:

Supprimez les espaces au début et à la fin d'une chaîne:

sentence= sentence.strip()

Supprimer des espaces dans le début d'une chaîne:

sentence = sentence.lstrip()

Supprimer les espaces dans la fin d'une chaîne:

sentence= sentence.rstrip()

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

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

Ou vous pouvez supprimer des virgules supplémentaires lors de la lecture dans une liste de chaînes:

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

0
2018-04-06 20:51



str1='  geeks for geeks   '
print(str1.strip().replace(' ',''))
output=geeksforgeeks

0
2017-07-18 20:34