Wie entferne ich führende Leerzeichen in Python?


180

Ich habe eine Textzeichenfolge, die mit einer Reihe von Leerzeichen beginnt, die zwischen 2 und 4 variieren.

Was ist der einfachste Weg, um das führende Leerzeichen zu entfernen? (dh alles vor einem bestimmten Zeichen entfernen?)

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

Antworten:


317

Die lstrip()Methode entfernt führende Leerzeichen, Zeilenumbrüche und Tabulatorzeichen an einem Zeichenfolgenanfang:

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

Bearbeiten

Wie in den Kommentaren erwähnt , sollte balpha verwendet werden, um nur Leerzeichen vom Anfang der Zeichenfolge zu entfernen lstrip(' '):

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

Verwandte Frage:


10
Beachten Sie jedoch, dass lstrip beim Entfernen führender Leerzeichen entfernt ist, bei denen es sich möglicherweise um Leerzeichen (Tabulatoren usw.) handelt. Das ist normalerweise was du willst. Wenn Sie nur Leerzeichen und Leerzeichen entfernen möchten, rufen Sie "bla" .lstrip ("")
balpha

1
@balpha: Danke für den Hinweis! Ich habe das der Antwort hinzugefügt.
Coobird

3
Ich programmiere seit Jahren und wusste das nicht, Lebensretter
Chris Hawkes

3
Für neue Python-Programmierer kann es nützlich sein, zu beachten, dass Zeichenfolgen in Python unveränderlich sind. Wenn Sie also mit einer Zeichenfolge 'string_a' arbeiten, denken Sie möglicherweise, dass string_a.lstrip () die Zeichenfolge selbst ändert, aber tatsächlich Sie müssen den Wert von string_a.lstrip () entweder sich selbst oder einer neuen Variablen zuweisen, z. B. "string_a = string_a.lstrip ()".
Felder

2
Hinweis: Da es lstrip () gibt, gibt es auch strip () und rstrip ()
Alexander Stohr

86

Die Funktion stripentfernt Leerzeichen vom Anfang und Ende einer Zeichenfolge.

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

gesetzt my_strzu "text".


17

Wenn Sie die Leerzeichen vor und hinter dem Wort schneiden möchten, behalten Sie die mittleren bei.
Du könntest benutzen:

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

Es ist erwähnenswert , dass dies tut Druck 'Hello World'mit dem mittleren Raum intakt, für jemand fragen, ich denke , es niedergestimmt wurde , weil die ursprüngliche Frage speziell zu entfernen , wurde gefragt führende Leerzeichen.
Conapart3

2
docs.python.org/3/whatsnew/3.0.html Print ist eine Funktion Die print-Anweisung wurde durch eine print () -Funktion mit Schlüsselwortargumenten ersetzt, um den größten Teil der speziellen Syntax der alten print-Anweisung (PEP 3105) zu ersetzen.
Mbrandeis

@mbrandeis Wie ist diese Aussage hier relevant?
MilkyWay90

12

Verwenden Sie einen regulären Ausdruck, um alles vor einem bestimmten Zeichen zu entfernen:

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

alles bis zum ersten 'a' entfernen. [^a]kann durch eine beliebige Zeichenklasse ersetzt werden, z. B. Wortzeichen.


3
Ich denke, der Typ hat nach dem "einfachsten und einfachsten Weg"
gefragt

10
Stimmt, aber er hat auch (vielleicht versehentlich) nach der Lösung für ein allgemeineres Problem gefragt, "dh alles vor einem bestimmten Charakter entfernen?", Und dies ist diese allgemeinere Lösung.
cjs

1

Die Frage bezieht sich nicht auf mehrzeilige Zeichenfolgen, aber hier erfahren Sie, wie Sie mit dem Standard-Bibliotheks-Textumbruchmodul von Python führende Leerzeichen aus einer mehrzeiligen Zeichenfolge entfernen . Wenn wir eine Zeichenfolge hätten wie:

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

Wenn wir print(s)eine Ausgabe erhalten würden wie:

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

und wenn wir verwendet haben 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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.