Saya ingin menghilangkan semua spasi dari sebuah string, pada kedua ujungnya, dan di antara kata-kata.
Saya memiliki kode Python ini:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
Tapi itu hanya menghilangkan spasi di kedua sisi string. Bagaimana cara menghilangkan semua spasi?
Jika Anda ingin menghapus spasi di depan dan di akhir, gunakan str.strip()
:
sentence = ' hello apple'
sentence.strip()
>>> 'hello apple'
Jika Anda ingin menghapus semua spasi, gunakan str.replace()
:
sentence = ' hello apple'
sentence.replace(" ", "")
>>> 'helloapple'
Jika Anda ingin menghapus spasi duplikat, gunakan str.split()
:
sentence = ' hello apple'
" ".join(sentence.split())
>>> 'hello apple'
Untuk menghapus hanya spasi gunakan str.replace
:
sentence = sentence.replace(' ', '')
Untuk menghapus semua karakter spasi (spasi, tab, newline, dan sebagainya) anda dapat menggunakan split
kemudian join
:
sentence = ''.join(sentence.split())
atau ekspresi reguler:
import re
pattern = re.compile(r'\s+')
sentence = re.sub(pattern, '', sentence)
Jika Anda hanya ingin menghapus spasi dari awal dan akhir, Anda dapat menggunakan strip
:
sentence = sentence.strip()
Anda juga dapat menggunakan lstrip
untuk menghapus spasi hanya dari awal string, dan rstrip
untuk menghapus spasi dari akhir string.
Alternatif lain adalah dengan menggunakan ekspresi reguler dan pertandingan aneh ini karakter white-space juga. Berikut ini adalah beberapa contoh:
Menghapus SEMUA spasi dalam string, bahkan antara kata-kata:
import re
sentence = re.sub(r"\s+", "", sentence, flags=re.UNICODE)
Hapus spasi di AWAL string:
import re
sentence = re.sub(r"^\s+", "", sentence, flags=re.UNICODE)
Hapus spasi di AKHIR string:
import re
sentence = re.sub(r"\s+$", "", sentence, flags=re.UNICODE)
Hapus spasi kedua di AWAL dan di AKHIR string:
import re
sentence = re.sub("^\s+|\s+$", "", sentence, flags=re.UNICODE)
HANYA menghapus DUPLIKAT ruang:
import re
sentence = " ".join(re.split("\s+", sentence, flags=re.UNICODE))
(Semua contoh bekerja di kedua Python 2 dan Python 3)
Spasi termasuk spasi, tab, dan CRLF. Jadi yang elegan dan satu-liner string fungsi yang bisa kita gunakan adalah terjemahkan:
' hello apple'.translate(None, ' \n\t\r')
ATAU jika anda ingin menjadi menyeluruh:
import string
' hello apple'.translate(None, string.whitespace)
' hello \n\tapple'.translate( { ord(c):None for c in ' \n\t\r' } )
MaK sudah menunjukkan "menerjemahkan" metode di atas. Dan variasi ini bekerja dengan Python 3 (lihat Q&A).
Berhati-hati:
strip
tidak rstrip dan lstrip (menghilangkan terkemuka dan trailing spasi, tab, dan pengembalian formulir feed, tapi itu tidak menghapus mereka di tengah-tengah string).
Jika anda hanya mengganti spasi dan tab anda dapat berakhir dengan tersembunyi CRLFs yang muncul untuk mencocokkan apa yang anda cari, tetapi tidak sama.
Selain itu, strip memiliki beberapa variasi:
Hapus spasi di AWAL dan AKHIR string:
sentence= sentence.strip()
Hapus spasi di AWAL string:
sentence = sentence.lstrip()
Hapus spasi di AKHIR string:
sentence= sentence.rstrip()
Semua tiga fungsi string strip
lstrip
, dan rstrip
dapat mengambil parameter dari string ke strip, dengan default semua ruang putih. Hal ini dapat membantu ketika anda bekerja dengan sesuatu yang khusus, misalnya, anda dapat menghapus hanya ruang tetapi tidak baris baru:
" 1. Step 1\n".strip(" ")
Atau anda bisa menghapus ekstra koma ketika membaca dalam daftar string:
"1,2,3,".strip(",")