Come rimuovo i principali spazi bianchi in Python?


181

Ho una stringa di testo che inizia con un numero di spazi, che varia tra 2 e 4.

Qual è il modo più semplice per rimuovere lo spazio bianco principale? (cioè rimuovere tutto prima di un certo personaggio?)

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

Risposte:


319

Il lstrip()metodo rimuoverà i principali spazi bianchi, newline e caratteri di tabulazione all'inizio di una stringa:

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

modificare

Come ha sottolineato balpha nei commenti , per rimuovere solo gli spazi dall'inizio della stringa, è lstrip(' ')necessario utilizzare:

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

Domanda correlata:


10
Si noti, tuttavia, che lstrip rimuove gli spazi bianchi iniziali che possono essere più di spazi (schede ecc.). Di solito è quello che vuoi. Se vuoi rimuovere solo spazi e spazi, chiama "bla" .lstrip ("")
balpha

1
@balpha: Grazie per averlo sottolineato! L'ho aggiunto alla risposta.
coobird,

3
sto programmando da anni e non lo sapevo, salvavita
Chris Hawkes

3
Potrebbe essere utile notare per i nuovi programmatori Python che le stringhe in Python sono immutabili, quindi se stai lavorando con una stringa 'string_a', potresti pensare che string_a.lstrip () cambierà la stringa stessa, ma in effetti è necessario assegnare il valore di string_a.lstrip () a se stesso o a una nuova variabile, ad esempio "string_a = string_a.lstrip ()".
Campi

2
nota: poiché c'è lstrip () c'è anche strip () e rstrip ()
Alexander Stohr

87

La funzione striprimuoverà gli spazi bianchi dall'inizio e dalla fine di una stringa.

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

verrà impostato my_strsu "text".


18

Se vuoi tagliare gli spazi bianchi prima e dietro la parola, ma mantieni quelli medi.
Puoi usare:

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

Vale la pena notare che questo fa di stampa 'Hello World'con lo spazio centrale intatto, per chiunque chiedendo, credo che è stato votato giù perché la domanda iniziale è stato specificamente chiesto di rimuovere principali spazi.
conapart3,

2
docs.python.org/3/whatsnew/3.0.html Stampa è una funzione L'istruzione print è stata sostituita con una funzione print (), con argomenti di parole chiave per sostituire la maggior parte della sintassi speciale della vecchia istruzione print (PEP 3105).
mbrandeis,

@mbrandeis In che modo questa affermazione è pertinente qui?
MilkyWay90

12

Per rimuovere tutto prima di un determinato personaggio, usa un'espressione regolare:

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

per rimuovere tutto fino alla prima "a". [^a]può essere sostituito con qualsiasi classe di caratteri che ti piace, come i caratteri di parole.


3
Penso che il ragazzo abbia chiesto il "modo più semplice e semplice"
No, il

10
È vero, ma ha anche (forse inavvertitamente) chiesto la soluzione per un problema più generale, "cioè. Rimuovere tutto prima di un certo personaggio?", E questa è quella soluzione più generale.
cjs,

1

La domanda non riguarda le stringhe su più righe, ma ecco come rimuovere gli spazi bianchi iniziali da una stringa su più righe utilizzando il modulo di textwrap della libreria standard di Python . Se avessimo una stringa come:

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

se print(s)ottenessimo un output come:

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

e se abbiamo usato 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.