Bagaimana cara menghapus spasi putih terkemuka di Python?

181

Saya memiliki string teks yang dimulai dengan sejumlah spasi, bervariasi antara 2 & 4.

Apa cara paling sederhana untuk menghapus spasi putih terkemuka? (mis. hapus semuanya sebelum karakter tertentu?)

"  Example"   -> "Example"
"  Example  " -> "Example  "
"    Example" -> "Example"
James Wanchai
sumber

Jawaban:

319

The lstrip()Metode akan menghapus spasi putih, baris dan karakter tab memimpin pada awal string yang:

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

Edit

Seperti yang ditunjukkan oleh balpha di komentar , untuk menghapus hanya spasi dari awal string, lstrip(' ')harus digunakan:

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

Pertanyaan terkait:

coobird
sumber
10
Perhatikan, meskipun demikian, lstrip itu saat menghapus spasi putih terdepan yang mungkin lebih dari spasi (tab dll). Itu biasanya yang Anda inginkan. Jika Anda ingin menghapus spasi dan spasi saja, panggil "bla" .lstrip ("")
balpha
1
@balpha: Terima kasih sudah menunjukkannya! Saya telah menambahkan itu ke jawabannya.
coobird
3
telah pemrograman selama bertahun-tahun dan tidak tahu ini, penyelamat
Chris Hawkes
3
Mungkin berguna untuk mencatat bagi programmer Python baru bahwa string dalam python tidak dapat diubah, jadi jika Anda bekerja dengan string 'string_a', Anda mungkin berpikir string_a.lstrip () akan mengubah string itu sendiri, tetapi pada kenyataannya Anda akan perlu menetapkan nilai string_a.lstrip () ke variabel itu sendiri atau variabel baru, misalnya "string_a = string_a.lstrip ()".
Fields
2
catatan: karena ada lstrip () ada juga strip () dan rstrip ()
Alexander Stohr
87

Fungsi ini stripakan menghapus spasi putih dari awal dan akhir string.

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

akan diatur my_strke "text".

Marquis Wang
sumber
18

Jika Anda ingin memotong spasi putih sebelum dan di belakang kata, tetapi tetap yang tengah.
Anda bisa menggunakan:

word = '  Hello World  '
stripped = word.strip()
print(stripped)
Tenzin
sumber
Perlu dicatat bahwa ini tidak mencetak 'Hello World'dengan ruang tengah yang utuh, bagi siapa pun yang bertanya-tanya, saya rasa itu telah ditolak karena pertanyaan awal secara khusus meminta untuk menghapus ruang utama .
conapart3
2
docs.python.org/3/whatsnew/3.0.html Print Is A Function Pernyataan cetak telah diganti dengan fungsi print (), dengan argumen kata kunci untuk menggantikan sebagian besar sintaks khusus dari pernyataan cetak lama (PEP 3105).
mbrandeis
@mbrandeis Bagaimana pernyataan itu relevan di sini?
MilkyWay90
12

Untuk menghapus semuanya sebelum karakter tertentu, gunakan ekspresi reguler:

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

untuk menghapus semuanya hingga 'a' pertama. [^a]dapat diganti dengan kelas karakter apa pun yang Anda suka, seperti karakter kata.

cjs
sumber
3
Saya pikir orang itu meminta "cara termudah & paling sederhana"
Tidak
10
Benar, tetapi dia juga (mungkin secara tidak sengaja) meminta solusi untuk masalah yang lebih umum, "mis. Hapus semuanya sebelum karakter tertentu?", Dan ini adalah solusi yang lebih umum.
cjs
1

Pertanyaannya tidak membahas string multiline, tetapi di sini adalah bagaimana Anda akan menghapus spasi putih terkemuka dari string multiline menggunakan modul textwrap library python standar . Jika kami memiliki string seperti:

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

jika kita print(s)kita akan mendapatkan output seperti:

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

dan jika kita menggunakan 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
sumber