Cette question m'a juste fait parler avec des collègues de travail sur le décapage pendant 3 minutes. Pour quiconque se joignant à mi-parcours, ils auraient pensé que nous travaillions tous un peu les emplois de nuit.
Whitecat
Réponses:
1738
Un seul espace ou tous les espaces consécutifs? Si le second, alors les chaînes ont déjà une .strip()méthode:
>>>' Hello '.strip()'Hello'>>>' Hello'.strip()'Hello'>>>'Bob has a cat'.strip()'Bob has a cat'>>>' Hello '.strip()# ALL consecutive spaces at both ends removed'Hello'
Si vous n'avez besoin que de supprimer un espace, vous pouvez le faire avec:
def strip_one_space(s):if s.endswith(" "): s = s[:-1]if s.startswith(" "): s = s[1:]return s
>>> strip_one_space(" Hello ")' Hello'
Notez également que les str.strip()autres espaces sont également supprimés (par exemple, les tabulations et les retours à la ligne). Pour supprimer uniquement les espaces, vous pouvez spécifier le caractère à supprimer comme argument strip, c'est- à -dire:
Si vous avez besoin de la fonction strip, par exemple une fonction map, vous pouvez y accéder via str.strip (), comme ainsi map (str.strip, collection_of_s)
Ward
1
Existe-t-il un moyen de ne couper que les espaces blancs aux extrémités?
Nikhil Girraj
2
@killthrush Merci pour la référence, mais je pense que vous vouliez dire la rstrip()fonction. :-)
Nikhil Girraj
14
Parfois, j'ai l'impression que python évite délibérément les noms bien acceptés et significatifs que la grande majorité des langues utilisent pour être "uniques" et "différents" - stripau lieu de trim, isinstanceau lieu de instanceof, listau lieu de array, etc., etc. Pourquoi ne pas simplement utiliser les noms que tout le monde connaît ?? geez: P
Gershom
3
@GershomMaes dans striple cas de, je suis complètement d'accord, mais une liste est complètement différente d'un tableau.
JFA
262
Comme indiqué dans les réponses ci-dessus
myString.strip()
supprimera tous les espaces blancs de début et de fin tels que \ n, \ r, \ t, \ f, espace.
Pour plus de flexibilité, utilisez ce qui suit
Supprime uniquement les caractères d'espacement principaux :myString.lstrip()
Supprime uniquement les caractères d'espacement de fin:myString.rstrip()
Supprime les caractères d'espaces spécifiques : myString.strip('\n')ou myString.lstrip('\n\r')ou myString.rstrip('\n\t')et ainsi de suite.
Plus de détails sont disponibles dans la documentation
Ce message n'a que du code, il n'explique pas ce que fait la fonction. Supprime-t-il les espaces de début ou de fin, ou les deux? Supprime-t-il uniquement les espaces ou tous les types d'espaces? Pouvez-vous alors lui faire supprimer uniquement les espaces, ou existe-t-il une autre fonction pour le faire? S'il supprime à la fois les espaces de début et de fin, pouvez-vous le faire supprimer uniquement l'une des deux, ou existe-t-il (ou) une ou plusieurs autres fonctions pour faire le travail? myString.strip()ne répond à aucune des questions que j'ai posées.
EKons
8
Pour être juste, OP a spécifiquement demandé une méthode qui supprime les espaces de début et de fin d'une chaîne. Bonne réponse pour moi
Denis Lins
21
Vous voulez strip ():
myphrases =[" Hello "," Hello","Hello ","Bob has a cat"]for phrase in myphrases:print phrase.strip()
Je voulais supprimer les espaces trop nombreux dans une chaîne (également entre la chaîne, pas seulement au début ou à la fin). J'ai fait ça, parce que je ne sais pas comment faire autrement:
Si vous souhaitez couper le nombre spécifié d'espaces de gauche à droite , vous pouvez le faire:
def remove_outer_spaces(text, num_of_leading, num_of_trailing):
text = list(text)for i in range(num_of_leading):if text[i]==" ":
text[i]=""else:breakfor i in range(1, num_of_trailing+1):if text[-i]==" ":
text[-i]=""else:breakreturn''.join(text)
txt1 =" MY name is "print(remove_outer_spaces(txt1,1,1))# result is: " MY name is "print(remove_outer_spaces(txt1,2,3))# result is: " MY name is "print(remove_outer_spaces(txt1,6,8))# result is: "MY name is"
Comment supprimer les espaces blancs de début et de fin d'une chaîne en Python?
La solution ci-dessous supprimera donc les espaces blancs avant et arrière ainsi que les espaces blancs intermédiaires. Comme si vous avez besoin d'obtenir des valeurs de chaîne claires sans plusieurs espaces blancs.
>>> str_1 =' Hello World'>>>print(' '.join(str_1.split()))HelloWorld>>>>>>>>> str_2 =' Hello World'>>>print(' '.join(str_2.split()))HelloWorld>>>>>>>>> str_3 ='Hello World '>>>print(' '.join(str_3.split()))HelloWorld>>>>>>>>> str_4 ='Hello World '>>>print(' '.join(str_4.split()))HelloWorld>>>>>>>>> str_5 =' Hello World '>>>print(' '.join(str_5.split()))HelloWorld>>>>>>>>> str_6 =' Hello World '>>>print(' '.join(str_6.split()))HelloWorld>>>>>>>>> str_7 ='Hello World'>>>print(' '.join(str_7.split()))HelloWorld
Comme vous pouvez le voir, cela supprimera tous les espaces blancs multiples de la chaîne (la sortie est Hello Worldpour tous). L'emplacement n'a pas d'importance. Mais si vous avez vraiment besoin d'espaces blancs de début et de fin, alors ce strip()serait trouvé.
Réponses:
Un seul espace ou tous les espaces consécutifs? Si le second, alors les chaînes ont déjà une
.strip()
méthode:Si vous n'avez besoin que de supprimer un espace, vous pouvez le faire avec:
Notez également que les
str.strip()
autres espaces sont également supprimés (par exemple, les tabulations et les retours à la ligne). Pour supprimer uniquement les espaces, vous pouvez spécifier le caractère à supprimer comme argumentstrip
, c'est- à -dire:la source
rstrip()
fonction. :-)strip
au lieu detrim
,isinstance
au lieu deinstanceof
,list
au lieu dearray
, etc., etc. Pourquoi ne pas simplement utiliser les noms que tout le monde connaît ?? geez: Pstrip
le cas de, je suis complètement d'accord, mais une liste est complètement différente d'un tableau.Comme indiqué dans les réponses ci-dessus
supprimera tous les espaces blancs de début et de fin tels que \ n, \ r, \ t, \ f, espace.
Pour plus de flexibilité, utilisez ce qui suit
myString.lstrip()
myString.rstrip()
myString.strip('\n')
oumyString.lstrip('\n\r')
oumyString.rstrip('\n\t')
et ainsi de suite.Plus de détails sont disponibles dans la documentation
la source
strip
n'est pas limité aux caractères d'espaces non plus:la source
Cela supprimera tous les espaces de début et de fin dans
myString
:la source
myString.strip()
ne répond à aucune des questions que j'ai posées.Vous voulez strip ():
la source
Je voulais supprimer les espaces trop nombreux dans une chaîne (également entre la chaîne, pas seulement au début ou à la fin). J'ai fait ça, parce que je ne sais pas comment faire autrement:
Cela remplace les espaces doubles dans un espace jusqu'à ce que vous n'ayez plus d'espace double
la source
Je n'ai pas trouvé de solution à ce que je cherchais, j'ai donc créé des fonctions personnalisées. Vous pouvez les essayer.
la source
Si vous souhaitez couper le nombre spécifié d'espaces de gauche à droite , vous pouvez le faire:
la source
Cela peut également être fait avec une expression régulière
la source
La solution ci-dessous supprimera donc les espaces blancs avant et arrière ainsi que les espaces blancs intermédiaires. Comme si vous avez besoin d'obtenir des valeurs de chaîne claires sans plusieurs espaces blancs.
Comme vous pouvez le voir, cela supprimera tous les espaces blancs multiples de la chaîne (la sortie est
Hello World
pour tous). L'emplacement n'a pas d'importance. Mais si vous avez vraiment besoin d'espaces blancs de début et de fin, alors cestrip()
serait trouvé.la source