ฉันจะลบช่องว่างนำหน้าและต่อท้ายจากสตริงใน Python ได้อย่างไร
ตัวอย่างเช่น:
" Hello " --> "Hello"
" Hello" --> "Hello"
"Hello " --> "Hello"
"Bob has a cat" --> "Bob has a cat"
ฉันจะลบช่องว่างนำหน้าและต่อท้ายจากสตริงใน Python ได้อย่างไร
ตัวอย่างเช่น:
" Hello " --> "Hello"
" Hello" --> "Hello"
"Hello " --> "Hello"
"Bob has a cat" --> "Bob has a cat"
คำตอบ:
เพียงแค่หนึ่งช่องว่างหรือช่องว่างต่อเนื่องทั้งหมด? ถ้าวินาทีสตริงจะมี.strip()
เมธอดอยู่แล้ว:
>>> ' 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'
หากคุณต้องการลบเพียงหนึ่งช่องว่างคุณสามารถทำได้ด้วย:
def strip_one_space(s):
if s.endswith(" "): s = s[:-1]
if s.startswith(" "): s = s[1:]
return s
>>> strip_one_space(" Hello ")
' Hello'
นอกจากนี้โปรดทราบว่าstr.strip()
จะลบอักขระช่องว่างอื่น ๆ ออกด้วย (เช่นแท็บและบรรทัดใหม่) หากต้องการลบช่องว่างเท่านั้นคุณสามารถระบุอักขระที่ต้องการลบเป็นอาร์กิวเมนต์strip
ได้เช่น:
>>> " Hello\n".strip(" ")
'Hello\n'
rstrip()
ฟังก์ชั่น :-)
strip
แทนtrim
, isinstance
แทนinstanceof
, list
แทนarray
ฯลฯ ฯลฯ ทำไมไม่เพียงใช้งาน ชื่อที่ทุกคนคุ้นเคยกับ ?? geez: P
strip
กรณีของฉันเห็นด้วยอย่างสมบูรณ์ แต่รายการแตกต่างจากอาร์เรย์อย่างสิ้นเชิง
ตามที่ระบุไว้ในคำตอบข้างต้น
myString.strip()
จะลบอักขระช่องว่างนำหน้าและต่อท้ายทั้งหมดเช่น \ n, \ r, \ t, \ f, ช่องว่าง
เพื่อความยืดหยุ่นที่มากขึ้นให้ใช้สิ่งต่อไปนี้
myString.lstrip()
myString.rstrip()
myString.strip('\n')
หรือmyString.lstrip('\n\r')
หรือmyString.rstrip('\n\t')
และอื่น ๆรายละเอียดเพิ่มเติมมีอยู่ในเอกสาร
strip
ไม่ จำกัด อักขระที่ช่องว่าง:
# remove all leading/trailing commas, periods and hyphens
title = title.strip(',.-')
นี้จะลบทุกชั้นนำและต่อท้ายช่องว่างในmyString
:
myString.strip()
myString.strip()
ตอบคำถามที่ฉันไม่ได้ระบุไว้อย่างใดอย่างหนึ่ง
คุณต้องการแถบ ():
myphrases = [ " Hello ", " Hello", "Hello ", "Bob has a cat" ]
for phrase in myphrases:
print phrase.strip()
ฉันต้องการลบช่องว่างมากเกินไปในสตริง (รวมถึงระหว่างสตริงไม่เพียง แต่ในตอนต้นหรือตอนท้าย) ฉันทำสิ่งนี้เพราะฉันไม่รู้วิธีการทำอย่างอื่น:
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)
สิ่งนี้จะแทนที่ช่องว่างคู่ในหนึ่งช่องว่างจนกว่าคุณจะไม่มีช่องว่างซ้อนอีกต่อไป
ฉันไม่พบวิธีแก้ไขสิ่งที่ฉันค้นหาดังนั้นฉันจึงสร้างฟังก์ชั่นที่กำหนดเอง คุณสามารถลองพวกเขา
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)))
หากคุณต้องการตัดจำนวนช่องว่างที่ระบุจากซ้ายและขวาคุณสามารถทำได้ดังนี้
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"
สิ่งนี้สามารถทำได้ด้วยการแสดงออกปกติ
import re
input = " Hello "
output = re.sub(r'^\s+|\s+$', '', input)
# output = 'Hello'
ฉันจะลบช่องว่างนำหน้าและต่อท้ายจากสตริงใน Python ได้อย่างไร
ดังนั้นวิธีการแก้ปัญหาด้านล่างจะลบช่องว่างนำหน้าและต่อท้ายรวมทั้งช่องว่างกลางด้วย เช่นถ้าคุณต้องการรับค่าสตริงที่ชัดเจนโดยไม่มีช่องว่างหลายช่อง
>>> 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
ในขณะที่คุณสามารถเห็นสิ่งนี้จะลบช่องว่างหลายช่องทั้งหมดในสตริง (เอาท์พุทHello World
สำหรับทุกคน) สถานที่ตั้งไม่สำคัญ แต่ถ้าคุณต้องการช่องว่างนำหน้าและต่อท้ายจริงๆแล้วstrip()
ก็จะพบ