Chuyển đến nội dung chính

Cách cắt gọn chuỗi trong Python: Ba phương pháp khác nhau

Tìm hiểu các nguyên tắc cơ bản về cắt bỏ ký tự ở đầu và cuối chuỗi trong Python.
· 6 phút đọc

Khám phá cùng AI

Cắt gọn văn bản là một tác vụ nền tảng khi xử lý dữ liệu văn bản trong Python, đặc biệt ở các giai đoạn làm sạch và chuẩn bị dữ liệu của dự án khoa học dữ liệu. Việc cắt gọn giúp loại bỏ các ký tự không mong muốn, như khoảng trắng, ở đầu và cuối chuỗi, giúp dữ liệu nhất quán hơn và sẵn sàng cho phân tích.

Trong hướng dẫn này, tôi sẽ đưa bạn đi qua ba phương pháp chính để cắt gọn chuỗi trong Python: .strip(), .lstrip() và .rstrip(), đồng thời đề cập đến các trường hợp sử dụng cụ thể để minh họa tính linh hoạt và hữu ích của chúng trong các tình huống thực tế.

3 phương pháp cắt gọn chuỗi trong Python

Python cung cấp các phương thức dựng sẵn để cắt gọn chuỗi, giúp việc làm sạch và tiền xử lý dữ liệu văn bản trở nên đơn giản. Các phương thức này bao gồm

  • .strip(): Loại bỏ các ký tự ở đầu và cuối (mặc định là khoảng trắng).
  • .lstrip(): Loại bỏ các ký tự ở đầu (mặc định là khoảng trắng) từ phía bên trái chuỗi.
  • .rstrip(): Loại bỏ các ký tự ở cuối (mặc định là khoảng trắng) từ phía bên phải chuỗi.

Hiểu các phương thức này cho phép xử lý và chuẩn bị văn bản hiệu quả, điều rất quan trọng cho mọi tác vụ khoa học dữ liệu liên quan đến dữ liệu văn bản.

1. Xóa khoảng trắng ở đầu và cuối chuỗi trong Python bằng .strip()

Phương thức .strip() được thiết kế để loại bỏ cả ký tự ở đầu và cuối chuỗi. Nó thường được dùng nhất để xóa khoảng trắng. Dưới đây là ví dụ khi dùng với chuỗi " I love learning Python! ".

text = "   I love learning Python!   "
trimmed_text = text.strip()
print(trimmed_text)  # Output: "I love learning Python!"

Phương thức này đặc biệt hữu ích để chuẩn hóa các chuỗi có thể có lượng khoảng trắng ở đầu và cuối khác nhau.

2. Xóa khoảng trắng ở đầu chuỗi trong Python bằng .lstrip()

Phương thức .lstrip() nhắm đến phía bên trái chuỗi, loại bỏ các ký tự ở đầu. Theo mặc định, nó xóa khoảng trắng, nhưng bạn có thể chỉ định xóa các ký tự cụ thể. Dưới đây là phương thức .lstrip() áp dụng cho cùng chuỗi " I love learning Python! " trong ví dụ trước:

text = "   I love learning Python!   "
left_trimmed_text = text.lstrip()
print(left_trimmed_text)  # Output: "I love learning Python!   "

.lstrip() hữu ích khi bạn cần dọn sạch các chuỗi bắt đầu bằng khoảng trắng hoặc ký tự không mong muốn, chẳng hạn như trong danh sách tên hoặc dữ liệu phân loại.

3. Xóa khoảng trắng ở cuối chuỗi trong Python bằng .rstrip()

Phương thức .rstrip() bổ trợ cho .lstrip() bằng cách loại bỏ các ký tự ở cuối từ phía bên phải chuỗi. Nó cũng linh hoạt cho phép chỉ định ký tự cần xóa. Dưới đây là áp dụng cho cùng ví dụ trên:

text = "   I love learning Python!   "
right_trimmed_text = text.rstrip()
print(right_trimmed_text)  # Output: "   I love learning Python!"

Hãy dùng .rstrip() khi xử lý các chuỗi có ký tự hoặc khoảng trắng thừa ở cuối, chẳng hạn như dấu câu hoặc chú thích phía sau.

Loại bỏ các ký tự cụ thể khỏi chuỗi trong Python

Các phương thức cắt gọn chuỗi của Python cho phép bạn chỉ định ký tự cần xóa ở đầu và cuối chuỗi. Khả năng này bổ sung thêm tính linh hoạt cho các phương thức .strip(), .lstrip() và .rstrip(), giúp bạn thực hiện các thao tác làm sạch chuỗi có mục tiêu hơn.

Tuy nhiên, như chúng ta sẽ thấy trong ví dụ, điều quan trọng là phải thừa nhận những hạn chế vốn có của các phương thức này: chúng không thể xóa ký tự ở giữa chuỗi hoặc xử lý các loại bỏ dựa trên mẫu phức tạp hơn. Với các nhu cầu nâng cao như vậy, biểu thức chính quy (regex) là giải pháp mạnh mẽ hơn.

Loại bỏ ký tự cụ thể khỏi chuỗi trong Python bằng .strip()

Trước hết, hãy bắt đầu với phương thức .strip(). Phương thức .strip() có thể tùy chỉnh để không chỉ xóa khoảng trắng mà còn loại bỏ các ký tự cụ thể ở cả hai đầu chuỗi. Ví dụ:

text = "!!!I love learning Python!!!"
specific_char_trimmed = text.strip('!')
print(specific_char_trimmed)  # Output: "I love learning Python"

Giờ hãy tưởng tượng chuỗi của chúng ta thực ra là "xxxyyy I love learning Python xxxyyy". Vì ”xxx” và ”yyy” đều xuất hiện ở đầu và cuối chuỗi, bạn có thể xóa cả hai bằng cách chỉ định ký tự 'xy' làm ký tự cần loại bỏ. Dưới đây là minh họa!

text = "xxxyyy I love learning Python xxxyyy"
specific_chars_trimmed = text.strip('xy')
print(specific_chars_trimmed)  # Output: " I love learning Python "

Như đã đề cập, điều quan trọng là hiểu rằng .strip() không thể xóa ký tự ở giữa chuỗi. Ví dụ, nếu văn bản chúng ta đang cắt là "!!!I love learning!!! Python!!!"—kết quả của thao tác trên sẽ là ”I love learning!!! Python”. Với các thao tác loại bỏ phức tạp hơn, tốt nhất bạn nên dùng biểu thức chính quy thay vì các phương thức strip được trình bày trong hướng dẫn này.

Loại bỏ ký tự cụ thể khỏi chuỗi trong Python bằng .lstrip() và .rstrip()

Điều tương tự cũng áp dụng cho các phương thức .lstrip() và .rstrip(). Dưới đây là ví dụ về việc xóa các ký tự cụ thể ở đầu và cuối trong .lstrip() và .rstrip() tương ứng:

text = "!!!I love learning Python!!!"

left_char_trimmed = text.lstrip('!')
print(left_char_trimmed)  # Output: "I love learning Python!!!"

right_char_trimmed = text.rstrip('!')
print(right_char_trimmed)  # Output: "!!!I love learning Python"

Hơn nữa, cùng kỹ thuật xóa nhiều ký tự cũng có thể áp dụng cho .lstrip() và .rstrip()

text = "xxxyyy I love learning Python xxxyyy"

left_chars_trimmed = text.lstrip('xy')
print(left_chars_trimmed)  # Output: " I love learning Python xxxyyy"

right_chars_trimmed = text.rstrip('xy')
print(right_chars_trimmed)  # Output: "xxxyyy I love learning Python"

Các phương thức cắt gọn chuỗi mới trong Python 3.9

Python 3.9 giới thiệu str.removeprefix() và str.removesuffix(), cho phép xóa rõ ràng tiền tố hoặc hậu tố đã biết.

Xóa tiền tố bằng removeprefix()

text = "Python_is_fun"
trimmed_text = text.removeprefix("Python_")
print(trimmed_text)  # Output: "is_fun"

Xóa hậu tố bằng removesuffix()

text = "data_cleaning.csv"
trimmed_text = text.removesuffix(".csv")
print(trimmed_text)  # Output: "data_cleaning"

Các lưu ý về hiệu năng khi cắt gọn chuỗi

Khi làm việc với tập dữ liệu lớn, cắt gọn chuỗi hiệu quả là điều quan trọng. .strip(), .lstrip() và .rstrip() hoạt động với độ phức tạp thời gian O(n). Tuy nhiên, với những tập dữ liệu khổng lồ, sử dụng các phép toán vector hóa trong Pandas có thể hiệu quả hơn:

import pandas as pd
df = pd.DataFrame({"text": ["  Data Science  ", "  Machine Learning  "]})
df["cleaned_text"] = df["text"].str.strip()
print(df)

Kết luận

Hiểu cách cắt gọn và thao tác chuỗi là điều thiết yếu để lập trình Python hiệu quả. Trong khi các phương thức .strip(), .lstrip() và .rstrip() đáp ứng nhu cầu cơ bản, xử lý các kịch bản phức tạp hơn có thể đòi hỏi bạn phải dùng đến biểu thức chính quy. Để học thêm, hãy tham khảo hướng dẫn về biểu thức chính quy, hoặc tốt hơn nữa, bắt đầu với lộ trình kỹ năng Xử lý ngôn ngữ tự nhiên bằng Python của DataCamp.

Adel Nehme

Tác giả

Adel Nehme

Adel là một nhà giáo dục Khoa học Dữ liệu, diễn giả, và Phó Chủ tịch phụ trách Truyền thông tại DataCamp. Adel đã phát hành nhiều khóa học và buổi đào tạo trực tiếp về phân tích dữ liệu, học máy và kỹ thuật dữ liệu. Anh đam mê lan tỏa kỹ năng dữ liệu và hiểu biết dữ liệu trong toàn tổ chức, cũng như những điểm giao thoa giữa công nghệ và xã hội. Anh có bằng Thạc sĩ Khoa học Dữ liệu và Phân tích Kinh doanh. Thời gian rảnh, bạn có thể bắt gặp anh vui đùa cùng chú mèo Louis.

Câu hỏi thường gặp

Tôi có thể dùng .strip(), .lstrip() hoặc .rstrip() để xóa ký tự số khỏi chuỗi không?

Có, bạn có thể chỉ định các ký tự số làm mục tiêu để xóa. Ví dụ:

text = "12345Python12345"
trimmed_text = text.strip('12345')
print(trimmed_text)  # Output: "Python"
Các phương thức .strip(), .lstrip() và .rstrip() xử lý chuỗi có ký tự khoảng trắng hỗn hợp như tab hoặc xuống dòng như thế nào?

Theo mặc định, các phương thức này xóa mọi loại khoảng trắng, bao gồm dấu cách, tab (\t) và xuống dòng (\n). Ví dụ:

text = "\t\n  Python Programming  \n\t"
trimmed_text = text.strip()
print(trimmed_text)  # Output: "Python Programming"
Điều gì xảy ra nếu tôi gọi .strip(), .lstrip() hoặc .rstrip() trên một chuỗi rỗng?

Nếu bạn gọi các phương thức này trên một chuỗi rỗng, chúng sẽ trả về chuỗi rỗng mà không có lỗi. Ví dụ:

text = ""
trimmed_text = text.strip()
print(trimmed_text)  # Output: ""

Chủ đề

Liên quan