Je veux éliminer tous les espaces blancs 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 n'élimine que les espaces des deux côtés de la chaîne. Comment supprimer tous les espaces?
python
trim
removing-whitespace
co2f2e
la source
la source
hello apple
?helloapple
?Réponses:
Si vous souhaitez supprimer les espaces de début et de fin, utilisez
str.strip()
:Si vous souhaitez supprimer tous les caractères d'espace, utilisez
str.replace()
:(NB cela ne supprime que le caractère d'espace ASCII «normal»
' ' U+0020
mais pas les autres espaces )Si vous souhaitez supprimer les espaces dupliqués, utilisez
str.split()
:la source
sentence.join(str_list)
vous demandez à python de joindre les éléments de str_list avecsentence
comme séparateur."".join(sentence.split())
est en effet la solution canonique, supprimant efficacement tous les espaces plutôt que simplement les espaces. L' excellente réponse de Mark Byers aurait probablement dû être acceptée à la place de cette réponse moins applicable.Pour supprimer uniquement les espaces, utilisez
str.replace
:Pour supprimer tous les caractères d' espacement (espace, tabulation, retour à la ligne, etc.), vous pouvez utiliser
split
ensuitejoin
:ou une expression régulière:
Si vous souhaitez supprimer uniquement les espaces blancs du début et de la fin, vous pouvez utiliser
strip
:Vous pouvez également utiliser
lstrip
pour supprimer les espaces uniquement au début de la chaîne etrstrip
pour supprimer les espaces à la fin de la chaîne.la source
yourstr.translate(str.maketrans('', '', ' \n\t\r'))
Une alternative consiste à utiliser des expressions régulières et à faire correspondre ces étranges espaces blancs également. Voici quelques exemples:
Supprimez TOUS les espaces d'une chaîne, même entre les mots:
Supprimez les espaces au DÉBUT d'une chaîne:
Supprimez les espaces à la fin d'une chaîne:
Supprimez les espaces à la fois au début et à la fin d'une chaîne:
Supprimez UNIQUEMENT les espaces EN DOUBLE:
(Tous les exemples fonctionnent à la fois en Python 2 et Python 3)
la source
L' espace comprend l' espace, les tabulations et le CRLF . Donc, une fonction de chaîne élégante et à une ligne que nous pouvons utiliser est
str.translate
:Python 3
OU si vous voulez être minutieux:
Python 2
OU si vous voulez être minutieux:
la source
\xc2\xa0
ans.translate( None, string.whitespace )
ne produit quebuiltins.TypeError: translate() takes exactly one argument (2 given)
pour moi. Docs dit que cet argument est une table de traduction, voir string.maketrans (). Mais voir le commentaire d'Amnon Harel, ci-dessous.' hello apple'.translate(str.maketrans('', '', string.whitespace))
Remarque: il vaut mieux faire une variable pour stocker la trans-table si vous avez l'intention de le faire plusieurs fois.Pour supprimer les espaces du début et de la fin, utilisez
strip
.la source
MaK a déjà souligné la méthode "translate" ci-dessus. Et cette variation fonctionne avec Python 3 (voir cette Q&R ).
la source
xxx.translate( { ord(c) :None for c in string.whitespace } )
pour plus de minutie.Faites attention:
strip
effectue un rstrip et un lstrip (supprime les espaces de début et de fin, les tabulations, les retours et les formulaires, mais il ne les supprime pas au milieu de la chaîne).Si vous remplacez uniquement les espaces et les tabulations, vous pouvez vous retrouver avec des CRLF cachés qui semblent correspondre à ce que vous recherchez, mais qui ne sont pas les mêmes.
la source
la source
De plus, la bande a quelques variantes:
Supprimez les espaces au début et à la fin d'une chaîne:
Supprimez les espaces au DÉBUT d'une chaîne:
Supprimez les espaces à la fin d'une chaîne:
Les trois fonctions de chaîne
strip
lstrip
etrstrip
peuvent prendre les paramètres de la chaîne à supprimer, 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 pouvez supprimer uniquement les espaces mais pas les retours à la ligne:Ou vous pouvez supprimer des virgules supplémentaires lors de la lecture dans une liste de chaînes:
la source
Documents Python:
la source
re
a déjà été suggéré, mais j'ai trouvé que la réponse réelle au titre de la question était un peu cachée parmi toutes les autres options.