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?
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'
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.
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)
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)
pour supprimer les espaces du début et de la fin, utilisez strip
.
>> " foo bar ".strip()
"foo bar"
' 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 ).
import re
sentence = ' hello apple'
re.sub(' ','',sentence) #helloworld (remove all spaces)
re.sub(' ',' ',sentence) #hello world (remove double spaces)
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.
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(",")