Bagaimana cara menghapus terkemuka dan trailing spasi dari string di Python?
Misalnya:
" Hello " --> "Hello"
" Hello" --> "Hello"
"Hello " --> "Hello"
"Bob has a cat" --> "Bob has a cat"
Hanya satu ruang, atau semua ruang berturut-turut? Jika yang kedua, maka string yang 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 untuk menghapus satu ruang namun, 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 str.strip()
lain menghilangkan karakter spasi putih juga (misalnya tab dan baris baru). Untuk menghapus hanya spasi, anda dapat menentukan karakter untuk menghapus sebagai argumen untuk strip
, yaitu:
>>> " Hello\n".strip(" ")
'Hello\n'
Seperti yang ditunjukkan dalam jawaban di atas
myString.strip()
akan menghapus semua leading dan trailing spasi karakter seperti \n, \r, \t, \f, ruang.
Untuk fleksibilitas yang lebih menggunakan berikut
myString.lstrip()
myString.rstrip()
myString.strip('\n')
atau myString.lstrip('\n\r')
atau myString.rstrip('\n\t')
dan sebagainya.Rincian lebih lanjut tersedia di docs
Ini akan menghapus semua **** leading dan trailing whitespace di myString
:
myString.strip()
Saya ingin menghapus terlalu banyak ruang-ruang dalam sebuah string (juga di antara string, tidak hanya di awal atau di akhir). Saya membuat ini, karena aku don't tahu bagaimana untuk melakukannya jika:
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 spasi ganda di salah satu ruang sampai anda tidak memiliki spasi ganda lagi
Saya tidak bisa menemukan solusi untuk apa yang saya cari jadi saya membuat beberapa fungsi kustom. Anda dapat mencoba mereka keluar.
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 tertentu ruang dari kiri dan kanan, anda bisa melakukan hal 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"