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"
James Wanchai
quelle

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:

Coobird
quelle
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".

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

cjs
quelle
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
Jaymon
quelle