Làm cách nào để xóa khoảng trắng hàng đầu trong Python?


180

Tôi có một chuỗi văn bản bắt đầu bằng một số khoảng trắng, khác nhau giữa 2 & 4.

Cách đơn giản nhất để loại bỏ khoảng trắng hàng đầu là gì? (tức là loại bỏ mọi thứ trước một nhân vật nào đó?)

"  Example"   -> "Example"
"  Example  " -> "Example  "
"    Example" -> "Example"

Câu trả lời:


317

Các lstrip()phương pháp sẽ loại bỏ khoảng trắng, xuống dòng và ký tự tab hàng đầu về một sự khởi đầu chuỗi:

>>> '     hello world!'.lstrip()
'hello world!'

Biên tập

Như balpha đã chỉ ra trong các bình luận , để loại bỏ chỉ khoảng trắng từ đầu chuỗi, lstrip(' ')nên được sử dụng:

>>> '   hello world with 2 spaces and a tab!'.lstrip(' ')
'\thello world with 2 spaces and a tab!'

Câu hỏi liên quan:


10
Tuy nhiên, lưu ý rằng lstrip đó trong khi loại bỏ khoảng trắng hàng đầu có thể nhiều hơn khoảng trắng (tab, v.v.). Đó thường là những gì bạn muốn. Nếu bạn chỉ muốn xóa khoảng trắng và khoảng trắng, hãy gọi "bla" .lstrip ("")
balpha

1
@balpha: Cảm ơn vì đã chỉ ra! Tôi đã thêm nó vào câu trả lời.
coobird

3
đã lập trình trong nhiều năm và không biết điều này, phao cứu sinh
Chris Hawkes

3
Có thể hữu ích khi lưu ý cho các lập trình viên Python mới rằng các chuỗi trong python là bất biến, vì vậy nếu bạn đang làm việc với một chuỗi 'string_a', bạn có thể nghĩ rằng chuỗi_a.lstrip () sẽ tự thay đổi chuỗi, nhưng thực tế là bạn cần gán giá trị của string_a.lstrip () cho chính nó hoặc một biến mới, ví dụ: "string_a = string_a.lstrip ()".
Các lĩnh vực

2
lưu ý: vì có lstrip () cũng có dải () và rstrip ()
Alexander Stohr

86

Hàm stripsẽ xóa khoảng trắng từ đầu và cuối chuỗi.

my_str = "   text "
my_str = my_str.strip()

sẽ đặt my_strthành "text".


17

Nếu bạn muốn cắt các khoảng trắng trước và sau từ, nhưng giữ các khoảng giữa.
Bạn đã có thể sử dụng:

word = '  Hello World  '
stripped = word.strip()
print(stripped)

Điều đáng chú ý là điều này không in 'Hello World'với không gian giữa còn nguyên vẹn, đối với bất kỳ ai thắc mắc, tôi đoán nó đã được bỏ phiếu vì câu hỏi ban đầu được yêu cầu cụ thể để loại bỏ không gian hàng đầu .
conapart3

2
docs.python.org/3/whatsnew/3.0.html Print Is A Function Lệnh in đã được thay thế bằng hàm print (), với các đối số từ khóa để thay thế hầu hết cú pháp đặc biệt của câu lệnh in cũ (PEP 3105).
mbrandeis

@mbrandeis Câu nói đó có liên quan ở đây như thế nào?
MilkyWay90

12

Để xóa mọi thứ trước một ký tự nhất định, hãy sử dụng biểu thức chính quy:

re.sub(r'^[^a]*', '')

để loại bỏ mọi thứ lên đến 'a' đầu tiên. [^a]có thể được thay thế bằng bất kỳ lớp ký tự nào bạn thích, chẳng hạn như các ký tự từ.


3
Tôi nghĩ rằng anh chàng đã yêu cầu "cách dễ nhất và đơn giản nhất"
Không,

10
Đúng, nhưng anh ta cũng (có lẽ vô tình) yêu cầu giải pháp cho một vấn đề tổng quát hơn, "tức là loại bỏ mọi thứ trước một nhân vật nào đó?", Và đây là giải pháp tổng quát hơn.
cjs

1

Câu hỏi không đề cập đến các chuỗi đa dòng, nhưng đây là cách bạn sẽ loại bỏ khoảng trắng hàng đầu khỏi chuỗi đa dòng bằng mô-đun văn bản thư viện tiêu chuẩn của python . Nếu chúng ta có một chuỗi như:

s = """
    line 1 has 4 leading spaces
    line 2 has 4 leading spaces
    line 3 has 4 leading spaces
"""

nếu chúng print(s)ta sẽ nhận được đầu ra như:

>>> print(s)
    this has 4 leading spaces 1
    this has 4 leading spaces 2
    this has 4 leading spaces 3

và nếu chúng ta sử dụng 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.