Jak usunąć wiodące spacje w Pythonie?


181

Mam ciąg tekstowy zaczynający się od liczby spacji, mieszczący się w przedziale od 2 do 4.

Jaki jest najprostszy sposób na usunięcie wiodących białych znaków? (tj. usunąć wszystko przed określonym znakiem?)

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

Odpowiedzi:


319

lstrip()Metoda usunie wiodącym spacje, znak nowej linii i znaków tabulacji na początku łańcucha:

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

Edytować

Jak wskazał balpha w komentarzach , aby usunąć tylko spacje z początku ciągu, lstrip(' ')należy użyć:

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

Powiązane pytanie:


10
Zwróć jednak uwagę, że lstrip usuwa wiodące białe spacje, które mogą być większe niż spacje (tabulatory itp.). Zwykle tego chcesz. Jeśli chcesz usunąć tylko spacje i spacje, zadzwoń do „bla” .lstrip („”)
balpha

1
@balpha: Dzięki za zwrócenie uwagi! Dodałem to do odpowiedzi.
coobird

3
programuje od lat i nie wiedział o tym, ratownik
Chris Hawkes

3
Dla nowych programistów Pythona może być przydatne, aby zauważyć, że ciągi znaków w pythonie są niezmienne, więc jeśli pracujesz z ciągiem „string_a”, możesz pomyśleć, że string_a.lstrip () zmieni sam ciąg, ale w rzeczywistości trzeba przypisać wartość string_a.lstrip () do siebie lub nowej zmiennej, np. „string_a = string_a.lstrip ()”.
Fields

2
uwaga: ponieważ istnieje lstrip (), jest również strip () i rstrip ()
Alexander Stohr

87

Funkcja stripusunie białe znaki z początku i końca łańcucha.

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

zostanie ustawiony my_strna "text".


18

Jeśli chcesz wyciąć spacje przed i za słowem, ale zachowaj środkowe.
Możesz użyć:

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

Warto zauważyć, że to nie drukuj 'Hello World'ze środkowej przestrzeni nienaruszonego, aby ktokolwiek zastanawiając się, myślę, że został wybrany w dół, ponieważ oryginalne pytanie zostało specjalnie z prośbą o usunięcie wiodące spacje.
conapart3

2
docs.python.org/3/whatsnew/3.0.html Funkcja Drukuj jest funkcją Instrukcja print została zastąpiona funkcją print (), z argumentami słów kluczowych zastępującymi większość specjalnej składni starej instrukcji print (PEP 3105).
mbrandeis

@mbrandeis Jakie znaczenie ma to stwierdzenie?
MilkyWay90

12

Aby usunąć wszystko przed określonym znakiem, użyj wyrażenia regularnego:

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

aby usunąć wszystko aż do pierwszego „a”. [^a]można zastąpić dowolną klasą znaków, na przykład znakami słów.


3
Myślę, że facet zapytał o „najłatwiejszy i najprostszy sposób”
Nie,

10
To prawda, ale poprosił również (być może nieumyślnie) o rozwiązanie bardziej ogólnego problemu, „tj. Usunąć wszystko przed określoną postacią?” I to jest to bardziej ogólne rozwiązanie.
cjs

1

Pytanie nie dotyczy ciągów wielowierszowych, ale oto jak usunąć wiodące białe znaki z ciągu wielowierszowego przy użyciu modułu textwrap biblioteki standardowej Pythona . Gdybyśmy mieli ciąg taki jak:

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

jeśli print(s)otrzymamy dane wyjściowe takie jak:

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

a jeśli użyliśmy 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.