Pertanyaan ini baru saja membuat saya berbicara dengan rekan kerja tentang pengupasan selama 3 menit. Bagi siapa pun yang bergabung setengah jalan, mereka akan mengira kita semua sedikit bekerja di malam hari.
Whitecat
Jawaban:
1736
Hanya satu ruang, atau semua ruang berurutan? Jika yang kedua, maka string sudah memiliki .strip()metode:
>>>' Hello '.strip()'Hello'>>>' Hello'.strip()'Hello'>>>'Bob has a cat'.strip()'Bob has a cat'>>>' Hello '.strip()# ALL consecutive spaces at both ends removed'Hello'
Jika Anda hanya perlu menghapus satu ruang saja, Anda bisa melakukannya dengan:
def strip_one_space(s):if s.endswith(" "): s = s[:-1]if s.startswith(" "): s = s[1:]return s>>> strip_one_space(" Hello ")' Hello'
Juga, perhatikan bahwa juga str.strip()menghapus karakter spasi putih (misalnya tab dan baris baru). Untuk menghapus hanya spasi, Anda dapat menentukan karakter yang akan dihapus sebagai argumen strip, yaitu:
Jika Anda memerlukan fungsi strip, misalnya fungsi peta, Anda dapat mengaksesnya melalui str.strip (), seperti halnya map (str.strip, collection_of_s)
Ward
1
Apakah ada cara untuk hanya memotong spasi putih di ujungnya?
Nikhil Girraj
2
@killthrush Terima kasih untuk referensi, tapi saya pikir Anda maksud rstrip()fungsinya. :-)
Nikhil Girraj
14
Terkadang saya merasa seperti python sengaja menghindari nama-nama yang diterima dengan baik dan bermakna yang digunakan sebagian besar bahasa untuk menjadi "unik" dan "berbeda" - stripalih - alih trim, isinstancebukannya instanceof, listbukannya , bukannya array, dll, dll. Mengapa tidak hanya menggunakan nama-nama yang semua orang kenal? Ya ampun: P
Gershom
3
@ GershomMaes dalam stripkasus ini, saya sepenuhnya setuju, tetapi daftar sama sekali berbeda dari array.
JFA
262
Seperti yang ditunjukkan dalam jawaban di atas
myString.strip()
akan menghapus semua karakter spasi putih depan dan belakang seperti \ n, \ r, \ t, \ f, spasi.
Untuk lebih fleksibel gunakan yang berikut ini
Menghapus hanya karakter spasi putih terkemuka :myString.lstrip()
Menghapus hanya mengikuti karakter spasi:myString.rstrip()
Menghapus karakter spasi putih khusus : myString.strip('\n')atau myString.lstrip('\n\r')atau myString.rstrip('\n\t')dan sebagainya.
Posting ini hanya memiliki kode, tidak menjelaskan apa fungsinya. Apakah itu menghapus spasi putih terkemuka, atau keduanya? Apakah hanya menghapus spasi atau setiap jenis spasi putih? Bisakah Anda membuatnya menghapus spasi saja, atau apakah ada fungsi lain untuk melakukannya? Jika menghapus spasi utama dan akhir, dapatkah Anda membuatnya menghapus hanya satu dari keduanya, atau apakah ada (an) fungsi lain untuk melakukan pekerjaan itu? myString.strip()tidak menjawab salah satu pertanyaan yang telah saya nyatakan.
EKons
8
Agar adil, OP secara khusus meminta metode yang menghilangkan spasi spasi awal dan akhir dari string. Jawaban yang cukup bagus untuk saya
Denis Lins
21
Anda ingin menghapus ():
myphrases =[" Hello "," Hello","Hello ","Bob has a cat"]for phrase in myphrases:print phrase.strip()
Saya ingin menghapus spasi terlalu banyak dalam sebuah string (juga di antara string, tidak hanya di awal atau akhir). Saya membuat ini, karena saya tidak tahu bagaimana melakukannya:
Jika Anda ingin memangkas jumlah ruang tertentu dari kiri dan kanan , Anda bisa melakukan ini:
def remove_outer_spaces(text, num_of_leading, num_of_trailing):
text = list(text)for i in range(num_of_leading):if text[i]==" ":
text[i]=""else:breakfor i in range(1, num_of_trailing+1):if text[-i]==" ":
text[-i]=""else:breakreturn''.join(text)
txt1 =" MY name is "print(remove_outer_spaces(txt1,1,1))# result is: " MY name is "print(remove_outer_spaces(txt1,2,3))# result is: " MY name is "print(remove_outer_spaces(txt1,6,8))# result is: "MY name is"
Bagaimana cara menghapus spasi putih terkemuka dan tambahan dari string dengan Python?
Jadi solusi di bawah ini akan menghapus spasi putih depan dan belakang juga spasi putih menengah. Seperti jika Anda perlu mendapatkan nilai string yang jelas tanpa beberapa spasi putih.
>>> str_1 =' Hello World'>>>print(' '.join(str_1.split()))HelloWorld>>>>>>>>> str_2 =' Hello World'>>>print(' '.join(str_2.split()))HelloWorld>>>>>>>>> str_3 ='Hello World '>>>print(' '.join(str_3.split()))HelloWorld>>>>>>>>> str_4 ='Hello World '>>>print(' '.join(str_4.split()))HelloWorld>>>>>>>>> str_5 =' Hello World '>>>print(' '.join(str_5.split()))HelloWorld>>>>>>>>> str_6 =' Hello World '>>>print(' '.join(str_6.split()))HelloWorld>>>>>>>>> str_7 ='Hello World'>>>print(' '.join(str_7.split()))HelloWorld
Seperti yang Anda lihat ini akan menghapus semua spasi putih dalam string (output Hello Worlduntuk semua). Lokasi tidak masalah. Tetapi jika Anda benar-benar perlu memimpin dan mengikuti spasi, maka strip()akan ditemukan.
Jawaban:
Hanya satu ruang, atau semua ruang berurutan? Jika yang kedua, maka string sudah memiliki
.strip()
metode:Jika Anda hanya perlu menghapus satu ruang saja, Anda bisa melakukannya dengan:
Juga, perhatikan bahwa juga
str.strip()
menghapus karakter spasi putih (misalnya tab dan baris baru). Untuk menghapus hanya spasi, Anda dapat menentukan karakter yang akan dihapus sebagai argumenstrip
, yaitu:sumber
rstrip()
fungsinya. :-)strip
alih - alihtrim
,isinstance
bukannyainstanceof
,list
bukannya , bukannyaarray
, dll, dll. Mengapa tidak hanya menggunakan nama-nama yang semua orang kenal? Ya ampun: Pstrip
kasus ini, saya sepenuhnya setuju, tetapi daftar sama sekali berbeda dari array.Seperti yang ditunjukkan dalam jawaban di atas
akan menghapus semua karakter spasi putih depan dan belakang seperti \ n, \ r, \ t, \ f, spasi.
Untuk lebih fleksibel gunakan yang berikut ini
myString.lstrip()
myString.rstrip()
myString.strip('\n')
ataumyString.lstrip('\n\r')
ataumyString.rstrip('\n\t')
dan sebagainya.Rincian lebih lanjut tersedia di dokumen
sumber
strip
tidak terbatas pada karakter spasi putih juga:sumber
Ini akan menghapus semua spasi putih depan dan belakang di
myString
:sumber
myString.strip()
tidak menjawab salah satu pertanyaan yang telah saya nyatakan.Anda ingin menghapus ():
sumber
Saya ingin menghapus spasi terlalu banyak dalam sebuah string (juga di antara string, tidak hanya di awal atau akhir). Saya membuat ini, karena saya tidak tahu bagaimana melakukannya:
Ini menggantikan ruang ganda dalam satu ruang sampai Anda tidak memiliki ruang ganda lagi
sumber
Saya tidak dapat menemukan solusi untuk apa yang saya cari jadi saya membuat beberapa fungsi khusus. Anda bisa mencobanya.
sumber
Jika Anda ingin memangkas jumlah ruang tertentu dari kiri dan kanan , Anda bisa melakukan ini:
sumber
Ini juga bisa dilakukan dengan ekspresi reguler
sumber
Jadi solusi di bawah ini akan menghapus spasi putih depan dan belakang juga spasi putih menengah. Seperti jika Anda perlu mendapatkan nilai string yang jelas tanpa beberapa spasi putih.
Seperti yang Anda lihat ini akan menghapus semua spasi putih dalam string (output
Hello World
untuk semua). Lokasi tidak masalah. Tetapi jika Anda benar-benar perlu memimpin dan mengikuti spasi, makastrip()
akan ditemukan.sumber