Saya ingin menghilangkan semua spasi putih dari string, di kedua ujungnya, dan di antara kata-kata.
Saya punya kode Python ini:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
Tapi itu hanya menghilangkan spasi putih di kedua sisi string. Bagaimana cara menghapus semua spasi putih?
python
trim
removing-whitespace
co2f2e
sumber
sumber
hello apple
?helloapple
?Jawaban:
Jika Anda ingin menghapus spasi awal dan akhir, gunakan
str.strip()
:Jika Anda ingin menghapus semua karakter spasi, gunakan
str.replace()
:(NB ini hanya menghilangkan karakter ruang ASCII "normal"
' ' U+0020
tetapi tidak spasi putih lainnya )Jika Anda ingin menghapus ruang yang digandakan, gunakan
str.split()
:sumber
sentence.join(str_list)
Anda meminta python untuk bergabung dengan item dari str_list dengansentence
sebagai pemisah."".join(sentence.split())
memang solusi kanonik, efisien menghapus semua spasi putih daripada hanya ruang. Mark Byers ' jawaban yang sangat baik mungkin harus telah diterima sebagai pengganti jawaban kurang berlaku ini.Untuk menghapus hanya spasi gunakan
str.replace
:Untuk menghapus semua karakter spasi (spasi, tab, baris baru, dan sebagainya) Anda dapat menggunakan
split
makajoin
:atau ekspresi reguler:
Jika Anda hanya ingin menghapus spasi putih dari awal dan akhir, Anda dapat menggunakan
strip
:Anda juga dapat menggunakan
lstrip
untuk menghapus spasi putih hanya dari awal string, danrstrip
untuk menghapus spasi putih dari akhir string.sumber
yourstr.translate(str.maketrans('', '', ' \n\t\r'))
Alternatifnya adalah menggunakan ekspresi reguler dan mencocokkan karakter spasi putih yang aneh ini juga. Berikut ini beberapa contohnya:
Hapus SEMUA spasi dalam string, bahkan di antara kata-kata:
Hapus spasi dalam AWAL string:
Hapus spasi di AKHIR string:
Hapus spasi di AWAL dan di AKHIR string:
Hapus ruang HANYA DUPLICATE:
(Semua contoh berfungsi di Python 2 dan Python 3)
sumber
Spasi mencakup ruang, tab, dan CRLF . Jadi fungsi string yang elegan dan satu garis yang dapat kita gunakan adalah
str.translate
:Python 3
ATAU jika Anda ingin teliti:
Python 2
ATAU jika Anda ingin teliti:
sumber
\xc2\xa0
ans.translate( None, string.whitespace )
hanya menghasilkanbuiltins.TypeError: translate() takes exactly one argument (2 given)
untuk saya. Documents mengatakan bahwa argumen adalah tabel terjemahan, lihat string.maketrans (). Tetapi lihat komentar oleh Amnon Harel, di bawah ini.' hello apple'.translate(str.maketrans('', '', string.whitespace))
Catatan: lebih baik membuat variabel untuk menyimpan trans-tabel jika Anda bermaksud melakukan ini berulang kali.Untuk menghapus spasi putih dari awal dan akhir, gunakan
strip
.sumber
MaK sudah menunjukkan metode "terjemahkan" di atas. Dan variasi ini berfungsi dengan Python 3 (lihat T&J ini ).
sumber
xxx.translate( { ord(c) :None for c in string.whitespace } )
untuk ketelitian.Hati-hati:
strip
melakukan rstrip dan lstrip (menghilangkan spasi, tab spasi, tab depan, dan umpan kembali, tetapi tidak menghapusnya di tengah-tengah string).Jika Anda hanya mengganti spasi dan tab, Anda bisa berakhir dengan CRLF tersembunyi yang tampaknya cocok dengan yang Anda cari, tetapi tidak sama.
sumber
sumber
Selain itu, strip memiliki beberapa variasi:
Hapus spasi di AWAL dan AKHIR string:
Hapus spasi dalam AWAL string:
Hapus spasi di AKHIR string:
Ketiga fungsi string
strip
lstrip
, danrstrip
dapat mengambil parameter string untuk menghapus, dengan default menjadi semua ruang putih. Ini dapat membantu ketika Anda bekerja dengan sesuatu yang khusus, misalnya, Anda dapat menghapus hanya spasi tetapi tidak baris baru:Atau Anda dapat menghapus koma tambahan saat membaca dalam daftar string:
sumber
Python docs:
sumber
re
telah disarankan sebelumnya, tetapi saya menemukan bahwa jawaban sebenarnya untuk judul pertanyaan agak tersembunyi di antara semua opsi lainnya.