Bagaimana cara menghapus semua spasi dalam string python? Misalnya, saya ingin string ingin strip my spaces
diubah menjadi stripmyspaces
, tetapi sepertinya saya tidak bisa menyelesaikannya dengan strip()
:
>>> 'strip my spaces'.strip()
'strip my spaces'
python
python-3.x
spaces
strip
nama pengguna salah
sumber
sumber
Jawaban:
Mengambil keuntungan dari perilaku str.split tanpa parameter sep:
Jika Anda hanya ingin menghapus spasi alih-alih semua spasi putih:
Optimalisasi prematur
Meskipun efisiensi bukanlah tujuan utama — menulis kode yang jelas — adalah beberapa penetapan waktu awal:
Perhatikan bahwa regex di-cache, jadi tidak lambat seperti yang Anda bayangkan. Mengkompilasi sebelumnya membantu beberapa, tetapi hanya penting dalam praktik jika Anda memanggil ini berkali- kali:
Meskipun re.sub lebih lambat 11,3x, ingat kemacetan Anda pasti di tempat lain. Sebagian besar program tidak akan melihat perbedaan antara 3 pilihan ini.
sumber
\s+
substitusi. Saya akan tetap dengan re.s.translate
metode ini? Mungkin mengalahkan semua metode yang ditampilkan di halaman ini.None
- walaupun, anehnya, itu membuatnya lebih lambat ...myString.translate(None, " \t\r\n\v")
. Hanya membutuhkan 83% selama teknik Roger (split and join) tercepat. Tidak yakin apakah itu mencakup semua karakter spasi putih yang terpecah, tetapi mungkin cukup untuk sebagian besar aplikasi ASCII.Juga menangani karakter spasi putih yang tidak Anda pikirkan (percayalah, ada banyak).
sumber
Kalau tidak,
Dan ini adalah versi Python3:
sumber
NameError: name 'string' is not defined
.import string
Yang paling sederhana adalah menggunakan ganti:
Atau, gunakan ekspresi reguler:
sumber
Hapus Spasi Mulai dengan Python
Hapus Trailing atau End Spaces dengan Python
Hapus whiteSpaces dari Awal dan akhir string dengan Python
Hapus semua spasi dalam python
sumber
Coba regex dengan
re.sub
. Anda dapat mencari semua spasi putih dan menggantinya dengan string kosong.\s
dalam pola Anda akan cocok dengan karakter spasi putih - dan bukan hanya spasi (tab, baris baru, dll). Anda dapat membaca lebih lanjut tentang itu di manual .sumber
sumber
Seperti yang disebutkan oleh Roger Pate, kode berikut berfungsi untuk saya:
Saya menggunakan Jupyter Notebook untuk menjalankan kode berikut:
sumber
Teknik standar untuk menyaring daftar berlaku, meskipun mereka tidak seefisien
split/join
atautranslate
metode.Kami membutuhkan seperangkat ruang putih:
The
filter
builtin:Pemahaman daftar (ya, gunakan kurung: lihat patokan di bawah):
Lipatan:
Benchmark:
sumber
TL / DR
Solusi ini diuji menggunakan Python 3.6
Untuk menghapus semua spasi dari string di Python3 Anda dapat menggunakan fungsi berikut:
Untuk menghapus karakter spasi putih ('\ t \ n \ r \ x0b \ x0c') Anda dapat menggunakan fungsi berikut:
Penjelasan
str.translate
Metode Python adalah metode str-built class, dibutuhkan sebuah tabel dan mengembalikan salinan string dengan setiap karakter dipetakan melalui tabel terjemahan yang diteruskan.Dokumentasi lengkap untuk str.translateUntuk membuat tabel terjemahan
str.maketrans
digunakan. Metode ini adalah metode kelas built-in lainnyastr
. Di sini kita menggunakannya dengan hanya satu parameter, dalam hal ini kamus, di mana tombol adalah karakter yang akan diganti dipetakan ke nilai dengan nilai penggantian karakter. Ini mengembalikan tabel terjemahan untuk digunakan bersamastr.translate
. Dokumentasi lengkap untuk str.maketransThe
string
modul python berisi beberapa operasi string umum dan konstanta.string.whitespace
adalah konstanta yang mengembalikan string yang berisi semua karakter ASCII yang dianggap sebagai spasi putih. Ini termasuk spasi karakter, tab, umpan baris, kembali, umpan form, dan tab vertikal.Dokumentasi lengkap untuk stringDalam fungsi kedua
dict.fromkeys
digunakan untuk membuat kamus di mana tombol adalah karakter dalam string yang dikembalikan olehstring.whitespace
masing-masing dengan nilaiNone
. Dokumentasi lengkap untuk dict.fromkeyssumber
Jika kinerja optimal bukan persyaratan dan Anda hanya ingin sesuatu yang sederhana mati, Anda dapat menentukan fungsi dasar untuk menguji setiap karakter menggunakan metode "isspace" bawaan kelas string:
Membangun
no_white_space
string dengan cara ini tidak akan memiliki kinerja yang ideal, tetapi solusinya mudah dimengerti.Jika Anda tidak ingin mendefinisikan suatu fungsi, Anda dapat mengubahnya menjadi sesuatu yang agak mirip dengan pemahaman daftar. Meminjam dari
join
solusi jawaban teratas :sumber