Posted in

Cắt & tách chuỗi trong Python

cut and split strings
Chuỗi (string) là một trong những kiểu dữ liệu quan trọng và được sử dụng thường xuyên nhất trong Python. Khi làm việc với văn bản, hai thao tác nổi…

Chuỗi (string) là một trong những kiểu dữ liệu quan trọng và được sử dụng thường xuyên nhất trong Python. Khi làm việc với văn bản, hai thao tác nổi bật nhất chính là cắt chuỗi (slicing)tách chuỗi (splitting). Đây là kỹ thuật nền tảng, giúp lập trình viên xử lý dữ liệu văn bản một cách linh hoạt và hiệu quả. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết cách sử dụng slicing và splitting trong Python, đi từ cơ bản đến nâng cao.

1. Khái niệm cắt và tách chuỗi

Cắt chuỗi (Slicing)

Cắt chuỗi là quá trình lấy một phần con của chuỗi gốc dựa trên vị trí chỉ số (index). Python cho phép truy cập nhanh chóng vào các ký tự riêng lẻ hoặc đoạn chuỗi con mà không cần viết nhiều vòng lặp.

Tách chuỗi (Splitting)

Tách chuỗi là quá trình chia chuỗi thành danh sách (list) các chuỗi nhỏ hơn dựa vào dấu phân cách. Đây là một kỹ thuật phổ biến khi xử lý dữ liệu dạng văn bản, như tách từ trong câu, tách cột dữ liệu CSV hoặc xử lý input từ người dùng.

2. Cắt chuỗi trong Python (String Slicing)

Cú pháp cơ bản:

# General syntax: string[start:end:step]
text = "PythonString"

# Slice from index 0 to 6 (excluding 6)
part1 = text[0:6]    # Output: "Python"

# Slice from beginning to index 6
part2 = text[:6]     # Output: "Python"

# Slice from index 6 to end
part3 = text[6:]     # Output: "String"

# Slice with step
part4 = text[0:12:2] # Output: "PtoSrn"
  • start: chỉ số bắt đầu (bao gồm).
  • end: chỉ số kết thúc (không bao gồm).
  • step: bước nhảy, cho phép bỏ qua ký tự theo quy luật.

Chỉ số âm (Negative Index)

Python hỗ trợ chỉ số âm, tính từ cuối chuỗi:

word = "HelloWorld"
print(word[-1])   # Output: "d" (last character)
print(word[-5:-1]) # Output: "Worl"

3. Các tình huống thực tế khi cắt chuỗi

Một số ứng dụng phổ biến của slicing:

3.1 Lấy ký tự đầu, cuối hoặc đoạn chuỗi bất kỳ

sentence = "DataScience"
print(sentence[0])   # "D"
print(sentence[-1])  # "e"
print(sentence[4:11]) # "Science"

3.2 Đảo ngược chuỗi

text = "Python"
reversed_text = text[::-1]
print(reversed_text)  # "nohtyP"

3.3 Lấy phần mở rộng của file

filename = "report.pdf"
extension = filename[-3:]
print(extension)  # "pdf"

3.4 Trích xuất ngày từ chuỗi

date_str = "2025-09-27"
day = date_str[-2:]
print(day)  # "27"

4. Tách chuỗi trong Python (String Splitting)

Hàm split() là công cụ chính để tách chuỗi.

4.1 Tách theo khoảng trắng

text = "Machine Learning with Python"
words = text.split()
print(words)  
# Output: ["Machine", "Learning", "with", "Python"]

4.2 Tách theo ký tự tùy chọn

data = "apple,banana,orange"
fruits = data.split(",")
print(fruits)  
# Output: ["apple", "banana", "orange"]

4.3 Giới hạn số lần tách

text = "one-two-three-four"
parts = text.split("-", 2)
print(parts)  
# Output: ["one", "two", "three-four"]

5. Các phương thức liên quan đến tách chuỗi

5.1 rsplit()

Tách từ phải sang trái:

text = "a-b-c-d"
result = text.rsplit("-", 2)
print(result)  
# Output: ["a-b", "c", "d"]

5.2 splitlines()

Tách chuỗi nhiều dòng:

paragraph = "Line1\nLine2\nLine3"
lines = paragraph.splitlines()
print(lines)  
# Output: ["Line1", "Line2", "Line3"]

5.3 Ghép chuỗi lại bằng join()

words = ["I", "love", "Python"]
sentence = " ".join(words)
print(sentence)  # "I love Python"

6. Ứng dụng thực tế của cắt & tách chuỗi

6.1 Phân tích dữ liệu CSV

record = "John,25,Engineer"
fields = record.split(",")
print(fields)  
# ["John", "25", "Engineer"]

6.2 Xử lý họ tên người dùng

full_name = "Nguyen Van A"
parts = full_name.split()
first_name = parts[0]
last_name = parts[-1]
print(first_name, last_name)  # "Nguyen A"

6.3 Chuẩn hóa dữ liệu văn bản

raw_text = "   Python  Programming   "
clean_text = raw_text.strip().split()
print(clean_text)  
# ["Python", "Programming"]

6.4 Tách và phân tích URL

url = "https://example.com/page?user=123"
protocol = url.split(":")[0]
domain = url.split("/")[2]
print(protocol, domain)  # "https", "example.com"

7. Kỹ thuật nâng cao và lưu ý

7.1 partition()rpartition()

text = "key=value=extra"
print(text.partition("="))  
# ("key", "=", "value=extra")

print(text.rpartition("="))  
# ("key=value", "=", "extra")

7.2 Kết hợp slicing với splitting

data = "ID:12345-Name:Alice"
id_part = data.split("-")[0][3:]
print(id_part)  # "12345"

7.3 Hiệu năng

  • Khi nối chuỗi nhiều lần, nên dùng "".join(list) thay vì dùng +.
  • Khi xử lý chuỗi rất lớn, cân nhắc dùng StringIO.

7.4 Lỗi thường gặp

  • IndexError khi truy cập ngoài phạm vi.
  • Kết quả rỗng nếu dấu phân cách không tồn tại.

8. Kết luận

Cắt và tách chuỗi nghe có vẻ đơn giản, nhưng thực ra lại là một kỹ năng cực kỳ quan trọng khi làm việc với Python. Trong bài viết này, mình và bạn đã cùng nhau tìm hiểu cách slicing để lấy chuỗi con, đảo ngược hay trích xuất dữ liệu, cùng với loạt phương thức hữu ích như split(), rsplit(), splitlines(), partition()join().

Không chỉ dừng lại ở lý thuyết, chúng ta còn thấy chúng có thể ứng dụng ngay trong thực tế: từ việc xử lý file CSV, tách họ tên, cho đến phân tích URL. Khi đã nắm vững những kỹ thuật này, bạn sẽ thấy việc thao tác với văn bản trở nên dễ dàng hơn rất nhiều, đồng thời cũng mở ra con đường để chúng ta chạm tới những chủ đề “xịn” hơn như Regular Expressions (Regex).

9. Tài liệu tham khảo

Leave a Reply

Your email address will not be published. Required fields are marked *