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?
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'
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.
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)
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)
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 de "traduction" ci-dessus. Et cette variation fonctionne avec Python 3 (voir this Q & A ).
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.
import re
sentence = ' hello Apple'
re.sub(' ','',sentence) #helloworld (remove all spaces)
re.sub(' ',' ',sentence) #hello world (remove double spaces)
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 strip
lstrip
, 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(",")