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"
James Wanchai
la source

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:

coobird
la source
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".

Marquis Wang
la source
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)
Tenzin
la source
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.

cjs
la source
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
Jaymon
la source