Comment supprimer les espaces de début en Python?


181

J'ai une chaîne de texte qui commence par un certain nombre d'espaces, variant entre 2 et 4.

Quelle est la manière la plus simple de supprimer l'espace blanc principal? (c'est-à-dire supprimer tout avant un certain caractère?)

"  Example"   -> "Example"
"  Example  " -> "Example  "
"    Example" -> "Example"

Réponses:


319

La lstrip()méthode supprimera les espaces de début, les caractères de nouvelle ligne et de tabulation sur une chaîne commençant:

>>> '     hello world!'.lstrip()
'hello world!'

Éditer

Comme Balpha l'a souligné dans les commentaires , afin de ne supprimer que les espaces du début de la chaîne, lstrip(' ')il faut utiliser:

>>> '   hello world with 2 spaces and a tab!'.lstrip(' ')
'\thello world with 2 spaces and a tab!'

Question connexe:


10
Notez, cependant, que lstrip tout en supprimant les espaces de début qui peuvent être plus que des espaces (tabulations, etc.). C'est généralement ce que vous voulez. Si vous souhaitez supprimer uniquement les espaces et les espaces, appelez "bla" .lstrip ("")
balpha

1
@balpha: Merci de l'avoir signalé! J'ai ajouté cela à la réponse.
coobird

3
programme depuis des années et ne le savait pas, bouée de sauvetage
Chris Hawkes

3
Il peut être utile de noter pour les nouveaux programmeurs Python que les chaînes en python sont immuables, donc si vous travaillez avec une chaîne 'string_a', vous pourriez penser que string_a.lstrip () changera la chaîne elle-même, mais en fait vous besoin d'affecter la valeur de string_a.lstrip () à lui-même ou à une nouvelle variable, par exemple "string_a = string_a.lstrip ()".
Champs

2
note: comme il y a lstrip () il y a aussi strip () et rstrip ()
Alexander Stohr

87

La fonction stripsupprimera les espaces au début et à la fin d'une chaîne.

my_str = "   text "
my_str = my_str.strip()

sera défini my_strsur "text".


18

Si vous voulez couper les espaces avant et derrière le mot, mais gardez les espaces du milieu.
Vous pouvez utiliser:

word = '  Hello World  '
stripped = word.strip()
print(stripped)

Il est intéressant de noter que ce fait impression 'Hello World'avec l'espace milieu intact, pour ceux qui se demandent, je suppose que cela a été voté à cause la question initiale a été spécifiquement demandé de retirer grands espaces.
conapart3

2
docs.python.org/3/whatsnew/3.0.html Imprimer est une fonction L'instruction print a été remplacée par une fonction print (), avec des arguments de mot-clé pour remplacer la plupart de la syntaxe spéciale de l'ancienne instruction print (PEP 3105).
mbrandeis le

@mbrandeis En quoi cette déclaration est-elle pertinente ici?
MilkyWay90

12

Pour tout supprimer avant un certain caractère, utilisez une expression régulière:

re.sub(r'^[^a]*', '')

pour tout supprimer jusqu'au premier «a». [^a]peut être remplacée par n'importe quelle classe de caractères de votre choix, comme les caractères de mots.


3
Je pense que le gars a demandé le "moyen le plus simple et le plus simple"
Non

10
C'est vrai, mais il a aussi (peut-être par inadvertance) demandé la solution pour un problème plus général, «c'est-à-dire tout supprimer avant un certain caractère?», Et c'est cette solution plus générale.
cjs

1

La question ne concerne pas les chaînes multilignes, mais voici comment supprimer les espaces de début d'une chaîne multiligne à l'aide du module textwrap de bibliothèque standard de python . Si nous avions une chaîne comme:

s = """
    line 1 has 4 leading spaces
    line 2 has 4 leading spaces
    line 3 has 4 leading spaces
"""

si nous print(s)obtenons une sortie comme:

>>> print(s)
    this has 4 leading spaces 1
    this has 4 leading spaces 2
    this has 4 leading spaces 3

et si nous avons utilisé textwrap.dedent:

>>> import textwrap
>>> print(textwrap.dedent(s))
this has 4 leading spaces 1
this has 4 leading spaces 2
this has 4 leading spaces 3
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.