Một substring (chuỗi con) trong Python là một phần văn bản được lấy từ một chuỗi. Bạn có thể trích xuất substring trong Python bằng cách cắt lát (slicing), với định dạng: YourString[StartingIndex:StoppingIndex:CharactersToSkip].
Thường xuyên, lập trình viên có dữ liệu muốn chia thành các phần khác nhau. Ví dụ, một nhà phát triển có thể có họ tên đầy đủ của người dùng, nhưng chỉ cần lấy tên. Trong trường hợp này, họ sẽ muốn tách tên thành hai phần: tên và họ.
Làm thế nào để thực hiện điều này trong Python? Đó là lúc string slicing (cắt lát chuỗi) xuất hiện. Sử dụng kỹ thuật gọi là slicing, chúng ta có thể lấy một phần cụ thể của chuỗi, sau đó trở thành một substring. Trong hướng dẫn này, chúng ta sẽ phân tích cách substring hoạt động trong Python và cách bạn có thể dùng slicing để tạo substring riêng.
Chỉ mục chuỗi (String Indexes): Ôn tập lại
Trước khi nói về slicing và cú pháp slice, chúng ta phải xem Python lập chỉ mục chuỗi như thế nào.
Trong Python, chuỗi là trình tự một hoặc nhiều ký tự có thể bao gồm số, khoảng trắng, chữ cái hoặc ký hiệu. Bạn có thể truy cập các phần của chuỗi giống như các trình tự khác, ví dụ như danh sách (list).
Mỗi ký tự trong chuỗi có giá trị chỉ mục riêng, cho biết vị trí của ký tự trong chuỗi. Các con số này bắt đầu từ chỉ mục 0. Ví dụ, chuỗi Python Substrings được biểu diễn như sau:
| P | y | t | h | o | n | S | u | b | s | t | r | i | n | g | ! | |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
Ký tự đầu tiên (P) có chỉ mục 0. Ký tự ! có chỉ mục 16.
Vì mỗi ký tự có chỉ mục riêng, chúng ta có thể đọc và thay đổi các ký tự riêng lẻ trong chuỗi.
Substring chuỗi Python
Giả sử chúng ta muốn lấy ba ký tự đầu tiên từ một chuỗi — làm sao? Hoặc nếu muốn lấy hai ký tự cuối cùng?
Chúng ta có thể dùng kỹ thuật gọi là slicing để lấy các phần dữ liệu cụ thể từ chuỗi. Đây là nơi chúng ta chỉ định trình tự ký tự từ một chuỗi nhất định mà chúng ta muốn lấy. Chúng ta có thể dùng slices để lấy bất kỳ dữ liệu nào chúng ta muốn từ chuỗi. Cú pháp chúng ta dùng là:
string[start:end:step]
Một slice có ba thành phần:
start: Vị trí chỉ mục bắt đầu slice. Mặc định là 0.end: Vị trí kết thúc slice. Ký tự tại vị trí end không được bao gồm trong slice. Mặc định, end là độ dài chuỗi.step: Yêu cầu slice bỏ qua mỗi ký tự thứ N. N bằng step bạn chỉ định. Mặc định step = 1.
Ví dụ Substring Python
Lấy ba ký tự đầu tiên
Chúng ta sẽ lấy ba ký tự đầu từ chuỗi. Sử dụng cú pháp slicing:
ourString = "Python Substring!" print(ourString[0:3])
Đầu ra:
Pyt
Bỏ qua số bắt đầu
Chúng ta cũng có thể bỏ qua số đầu tiên để lấy tất cả ký tự đến một giá trị nhất định trong văn bản. Điều này tiện lợi nếu văn bản cần lấy nằm ở đầu chuỗi.
Chúng ta có thể dùng kỹ thuật này để lấy ba ký tự đầu tiên mà không cần chỉ định 0 làm số bắt đầu:
ourString = "Python Substring!" print(ourString[:3])
Mã trả về cùng kết quả ví dụ trước. Chúng ta không chỉ định giá trị start. Vì start mặc định là 0. Chúng ta muốn lấy ký tự từ đầu chuỗi nên cú pháp này hoạt động.
Lấy hai ký tự cuối cùng
Chúng ta có thể lấy năm ký tự cuối của chuỗi bằng cách dùng chỉ mục âm và số bắt đầu:
value = "Python" print(value[-2:])
Mã trả về: on. Chúng ta chỉ chỉ định một giá trị: -2. Đây là số bắt đầu. -2 nói cho slice biết bắt đầu lấy ký tự từ vị trí chỉ mục倒数 thứ hai trong chuỗi.
Các ví dụ khác
Chúng ta đã chuẩn bị thêm vài ví dụ để giúp bạn học cách dùng phương thức slicing.
Lấy ký tự cuối cùng trong chuỗi
value = "Python" print(value[-1]) # Output: n
Chúng ta chỉ chỉ định giá trị start. Không có giá trị end. Nghĩa là slice chỉ lấy ký tự cuối cùng.
Lấy ký tự trong khoảng 2 và 3
value = "Python" print(value[2:3]) # Output: t
Giá trị start là 2, end là 3. Tất cả ký tự trong khoảng 2 và 3 được trả về. Loại trừ ký tự 3 vì end là độc quyền (exclusive).
Bỏ qua mỗi ký tự thứ hai
value = "Python" print(value[::2]) # Output: Pto
Chúng ta dùng hai dấu hai chấm để nói với Python rằng muốn dùng tham số start và end mặc định. Chỉ định 2 làm step. Nghĩa là slice sẽ lấy mỗi ký tự thứ hai từ chuỗi.
Kết luận
Một substring là một phần của chuỗi lớn hơn. Để lấy substring, bạn có thể dùng cú pháp slicing. Slicing cho phép bạn xác định một phạm vi ký tự để lấy. Bạn có thể dùng tham số thứ ba tùy chọn để bỏ qua các ký tự cụ thể trong phạm vi.
Tìm hiểu thêm về ngôn ngữ Python trong hướng dẫn học Python của chúng tôi.