Bagaimana cara menghapus spasi putih terkemuka dan tambahan dari string dengan Python?
Sebagai contoh:
" Hello " --> "Hello"
" Hello" --> "Hello"
"Hello " --> "Hello"
"Bob has a cat" --> "Bob has a cat"
Bagaimana cara menghapus spasi putih terkemuka dan tambahan dari string dengan Python?
Sebagai contoh:
" Hello " --> "Hello"
" Hello" --> "Hello"
"Hello " --> "Hello"
"Bob has a cat" --> "Bob has a cat"
Jawaban:
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:
>>> " Hello\n".strip(" ")
'Hello\n'
rstrip()
fungsinya. :-)
strip
alih - alih trim
, isinstance
bukannya instanceof
, list
bukannya , bukannya array
, dll, dll. Mengapa tidak hanya menggunakan nama-nama yang semua orang kenal? Ya ampun: P
strip
kasus ini, saya sepenuhnya setuju, tetapi daftar sama sekali berbeda dari array.
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
myString.lstrip()
myString.rstrip()
myString.strip('\n')
atau myString.lstrip('\n\r')
atau myString.rstrip('\n\t')
dan sebagainya.Rincian lebih lanjut tersedia di dokumen
strip
tidak terbatas pada karakter spasi putih juga:
# remove all leading/trailing commas, periods and hyphens
title = title.strip(',.-')
Ini akan menghapus semua spasi putih depan dan belakang di myString
:
myString.strip()
myString.strip()
tidak menjawab salah satu pertanyaan yang telah saya nyatakan.
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:
string = "Name : David Account: 1234 Another thing: something "
ready = False
while ready == False:
pos = string.find(" ")
if pos != -1:
string = string.replace(" "," ")
else:
ready = True
print(string)
Ini menggantikan ruang ganda dalam satu ruang sampai Anda tidak memiliki ruang ganda lagi
Saya tidak dapat menemukan solusi untuk apa yang saya cari jadi saya membuat beberapa fungsi khusus. Anda bisa mencobanya.
def cleansed(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
# return trimmed(s.replace('"', '').replace("'", ""))
return trimmed(s)
def trimmed(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
ss = trim_start_and_end(s).replace(' ', ' ')
while ' ' in ss:
ss = ss.replace(' ', ' ')
return ss
def trim_start_and_end(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
return trim_start(trim_end(s))
def trim_start(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
chars = []
for c in s:
if c is not ' ' or len(chars) > 0:
chars.append(c)
return "".join(chars).lower()
def trim_end(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
chars = []
for c in reversed(s):
if c is not ' ' or len(chars) > 0:
chars.append(c)
return "".join(reversed(chars)).lower()
s1 = ' b Beer '
s2 = 'Beer b '
s3 = ' Beer b '
s4 = ' bread butter Beer b '
cdd = trim_start(s1)
cddd = trim_end(s2)
clean1 = cleansed(s3)
clean2 = cleansed(s4)
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s1, len(s1), cdd, len(cdd)))
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s2, len(s2), cddd, len(cddd)))
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s3, len(s3), clean1, len(clean1)))
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s4, len(s4), clean2, len(clean2)))
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:
break
for i in range(1, num_of_trailing+1):
if text[-i] == " ":
text[-i] = ""
else:
break
return ''.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"
Ini juga bisa dilakukan dengan ekspresi reguler
import re
input = " Hello "
output = re.sub(r'^\s+|\s+$', '', input)
# output = 'Hello'
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()))
Hello World
>>>
>>>
>>> str_2 = ' Hello World'
>>> print(' '.join(str_2.split()))
Hello World
>>>
>>>
>>> str_3 = 'Hello World '
>>> print(' '.join(str_3.split()))
Hello World
>>>
>>>
>>> str_4 = 'Hello World '
>>> print(' '.join(str_4.split()))
Hello World
>>>
>>>
>>> str_5 = ' Hello World '
>>> print(' '.join(str_5.split()))
Hello World
>>>
>>>
>>> str_6 = ' Hello World '
>>> print(' '.join(str_6.split()))
Hello World
>>>
>>>
>>> str_7 = 'Hello World'
>>> print(' '.join(str_7.split()))
Hello World
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, maka strip()
akan ditemukan.