1. Khái niệm kiểu xâu (str)
- Định nghĩa: Xâu là một dãy các ký tự nằm trong cặp dấu nháy đơn
' hoặc nháy kép ". Các ký tự trong xâu thuộc bảng mã Unicode nên hỗ trợ tốt tiếng Việt. - Chỉ số (Index):
- Chỉ số dương (từ trái sang phải): Bắt đầu từ
0 đến n - 1. - Chỉ số âm (từ phải sang trái): Bắt đầu từ
-1 đến -n.
- Tính chất Immutable (Không thể thay đổi): Xâu trong Python là kiểu dữ liệu không thể thay đổi tại chỗ. Ta không thể gán lại giá trị cho từng ký tự bằng chỉ số (ví dụ:
s = 'A' sẽ báo lỗi TypeError). Muốn thay đổi xâu, ta phải gán xâu thành một đối tượng mới.
2. Các thao tác và phép toán cơ bản
- Độ dài xâu: Dùng hàm
len(s). - Truy cập ký tự: Cú pháp
s[i]. - Ghép xâu (+) và Lặp xâu (*):
s1 + s2 nối hai xâu lại với nhau.s * k lặp lại xâu s theo k lần.
- Cắt xâu (Slicing):
s[a:b] lấy từ chỉ số a đến b - 1.s[a:b:c] lấy từ chỉ số a đến gần b với bước nhảy c.s[::-1] dùng để đảo ngược thứ tự các ký tự trong xâu.
- So sánh xâu: So sánh dựa trên thứ tự bảng mã ASCII/Unicode của từng ký tự từ trái sang phải.
3. Các phương thức (Methods) xử lý xâu quan trọng
- Tách xâu:
s.split() (mặc định tách theo khoảng trắng) hoặc s.split(sep) (tách theo ký tự phân tách sep). - Chuyển đổi chữ hoa / chữ thường:
s.upper(): Chuyển toàn bộ thành chữ hoa.s.lower(): Chuyển toàn bộ thành chữ thường.s.capitalize(): Viết hoa ký tự đầu tiên của xâu.s.title(): Viết hoa chữ cái đầu của mỗi từ.s.swapcase(): Chuyển chữ hoa thành thường và ngược lại.
- Kiểm tra thành viên & Đếm:
sub in s: Trả về True nếu sub là xâu con của s.s.count(sub): Đếm số lần xuất hiện của xâu con sub trong s.
- Tìm kiếm & Thay thế:
s.find(sub): Trả về vị trí đầu tiên xuất hiện của sub (trả về -1 nếu không tìm thấy).s.replace(old, new): Thay thế tất cả các cụm xâu old bằng new.
- Xóa khoảng trắng thừa:
s.strip() (xóa 2 đầu), s.lstrip() (xóa bên trái), s.rstrip() (xóa bên phải). - Căn chỉnh & Thêm ký tự:
s.ljust(w), s.rjust(w), s.center(w), s.zfill(w) (thêm các số 0 vào bên trái cho đủ độ dài w). - Kiểm tra kiểu ký tự (trả về True/False):
s.isdigit(), s.isalpha(), s.isspace(), s.islower(), s.isupper(), s.istitle(). - Hàm khác:
max(s) và min(s) (tìm ký tự có mã ASCII lớn nhất/nhỏ nhất), eval(s) (tính giá trị biểu thức toán học biểu diễn dưới dạng xâu).
4. Các dạng bài tập vận dụng kinh điển
- So sánh độ dài (LONG.PY): So sánh
len(s1) và len(s2) để in ra xâu dài hơn. - Kiểm tra ký tự trùng (TRUNGNHAU.PY): Kiểm tra
s1 == s2[-1]. - Đảo ngược xâu (DAOXAU.PY): Sử dụng slicing
s[::-1]. - Xóa dấu cách (DAUCACH.PY): Thay thế tất cả khoảng trắng bằng xâu rỗng:
s.replace(' ', ''). - Trích xuất chữ số (CHUSO.PY): Duyệt từng ký tự, nếu
'0' <= c <= '9' thì nối vào xâu kết quả. - Xâu đối xứng Palindrome (PALIN.PY): Kiểm tra
if s == s[::-1]:. - Đếm tần suất xuất hiện ký tự (TANSUAT.PY): Chuyển về chữ thường
s.lower(), sau đó dùng s.count(c) cho các chữ cái tiếng Anh. - Thay thế cụm từ (ANHEM.PY): Sử dụng
s.replace('anh', 'em').