ฉันมีสตริงข้อความที่ขึ้นต้นด้วยจำนวนช่องว่างแตกต่างกันระหว่าง 2 และ 4
วิธีที่ง่ายที่สุดในการลบช่องว่างนำคืออะไร? (เช่นลบทุกอย่างก่อนที่จะมีตัวอักษรหรือไม่?)
" Example" -> "Example"
" Example " -> "Example "
" Example" -> "Example"
ฉันมีสตริงข้อความที่ขึ้นต้นด้วยจำนวนช่องว่างแตกต่างกันระหว่าง 2 และ 4
วิธีที่ง่ายที่สุดในการลบช่องว่างนำคืออะไร? (เช่นลบทุกอย่างก่อนที่จะมีตัวอักษรหรือไม่?)
" Example" -> "Example"
" Example " -> "Example "
" Example" -> "Example"
คำตอบ:
lstrip()
วิธีการจะลบช่องว่าง, การขึ้นบรรทัดใหม่และตัวอักษรแท็บชั้นนำในการเริ่มต้นสตริง:
>>> ' hello world!'.lstrip()
'hello world!'
แก้ไข
ตามที่ balpha ชี้ให้เห็นในความคิดเห็นเพื่อที่จะลบช่องว่างเฉพาะจากจุดเริ่มต้นของสตริงlstrip(' ')
ควรใช้:
>>> ' hello world with 2 spaces and a tab!'.lstrip(' ')
'\thello world with 2 spaces and a tab!'
คำถามที่เกี่ยวข้อง:
ฟังก์ชั่นstrip
จะลบช่องว่างจากจุดเริ่มต้นและจุดสิ้นสุดของสตริง
my_str = " text "
my_str = my_str.strip()
จะตั้งไปmy_str
"text"
หากคุณต้องการตัดช่องว่างก่อนและหลังคำ แต่ให้อยู่ตรงกลาง
คุณสามารถใช้:
word = ' Hello World '
stripped = word.strip()
print(stripped)
'Hello World'
ด้วยช่องว่างตรงกลางสำหรับทุกคนที่สงสัยฉันเดาว่ามันได้รับการโหวตเพราะคำถามเดิมถามโดยเฉพาะเพื่อลบช่องว่างนำ
หากต้องการลบทุกอย่างออกก่อนอักขระบางตัวให้ใช้นิพจน์ทั่วไป:
re.sub(r'^[^a]*', '')
เพื่อลบทุกอย่างจนถึง 'a' ตัวแรก [^a]
สามารถถูกแทนที่ด้วยคลาสตัวละครใด ๆ ที่คุณชอบเช่นตัวอักษรคำ
คำถามไม่ได้อยู่ที่สตริงหลายบรรทัด แต่นี่คือวิธีที่คุณจะตัดช่องว่างนำหน้าจากสตริงหลายบรรทัดโดยใช้โมดูล textwrap ไลบรารี่มาตรฐานของไพ ธอน หากเรามีสตริงเช่น:
s = """
line 1 has 4 leading spaces
line 2 has 4 leading spaces
line 3 has 4 leading spaces
"""
ถ้าเราprint(s)
เราจะได้รับผลลัพธ์เช่น:
>>> print(s)
this has 4 leading spaces 1
this has 4 leading spaces 2
this has 4 leading spaces 3
และถ้าเราใช้textwrap.dedent
:
>>> import textwrap
>>> print(textwrap.dedent(s))
this has 4 leading spaces 1
this has 4 leading spaces 2
this has 4 leading spaces 3