🧵 13.1 String methods cơ bản
📖 Giới thiệu
String methods là các hàm có sẵn để xử lý chuỗi trong Python. Chúng giúp thay đổi định dạng, tìm kiếm, thay thế và xử lý văn bản một cách dễ dàng mà không cần viết code phức tạp.
Mục tiêu bài học:
- Sử dụng thành thạo các string methods cơ bản
- Xử lý văn bản hiệu quả
- Ứng dụng trong bài toán thực tế
🔧 Cú pháp
Thay đổi định dạng:
python
text = "Hello World"
print(text.upper()) # HELLO WORLD
print(text.lower()) # hello world
print(text.title()) # Hello World
print(text.capitalize()) # Hello worldTìm kiếm:
python
text = "Python programming"
print(text.find("Pro")) # 7
print(text.count("o")) # 2
print(text.startswith("Py")) # True
print(text.endswith("ing")) # TrueCắt ghép:
python
text = "apple,banana,orange"
fruits = text.split(",") # ['apple', 'banana', 'orange']
joined = " - ".join(fruits) # "apple - banana - orange"🔬 Phân tích & Giải thích chi tiết
1. 🔤 Thay đổi định dạng chữ
python
ten = "nguyễn văn an"
# Các cách format
print(f"Gốc: {ten}")
print(f"IN HOA: {ten.upper()}")
print(f"in thường: {ten.lower()}")
print(f"Chữ Đầu Hoa: {ten.title()}")
print(f"Chỉ đầu hoa: {ten.capitalize()}")
# Kiểm tra định dạng
print(f"Có in hoa? {ten.isupper()}")
print(f"Có in thường? {ten.islower()}")
print(f"Có chữ đầu hoa? {ten.istitle()}")2. 🔍 Tìm kiếm trong chuỗi
python
cau = "Tôi học Python tại trường"
# Tìm vị trí
vi_tri = cau.find("Python")
print(f"'Python' ở vị trí: {vi_tri}")
# Đếm số lần xuất hiện
so_lan = cau.count("ô")
print(f"Chữ 'ô' xuất hiện: {so_lan} lần")
# Kiểm tra bắt đầu/kết thúc
print(f"Bắt đầu bằng 'Tôi': {cau.startswith('Tôi')}")
print(f"Kết thúc bằng 'trường': {cau.endswith('trường')}")3. ✂️ Cắt và ghép chuỗi
python
# Tách chuỗi
mon_hoc = "Toán,Văn,Anh,Lý"
ds_mon = mon_hoc.split(",")
print(f"Danh sách: {ds_mon}")
# Ghép chuỗi
ket_qua = " - ".join(ds_mon)
print(f"Đã ghép: {ket_qua}")
# Loại bỏ khoảng trắng
text_co_space = " Hello World "
print(f"Gốc: '{text_co_space}'")
print(f"Đã strip: '{text_co_space.strip()}'")💻 Ví dụ minh họa
Ví dụ 1: Xử lý tên học sinh
python
# Danh sách tên chưa chuẩn
ten_hoc_sinh = [
" nguyễn văn an ",
"TRẦN THỊ bình",
"lê VĂN chi ",
" PHẠM thị dung"
]
print("📝 XỬ LÝ TÊN HỌC SINH")
print("=" * 30)
print("Tên gốc:")
for ten in ten_hoc_sinh:
print(f"'{ten}'")
print("\nTên đã chuẩn hóa:")
ten_chuan = []
for ten in ten_hoc_sinh:
# Loại bỏ space + chữ đầu hoa
ten_sach = ten.strip().title()
ten_chuan.append(ten_sach)
print(f"'{ten_sach}'")
print(f"\nĐã xử lý {len(ten_chuan)} tên")
# Kiểm tra tên nào có chữ "Thị"
print("\nTên có 'Thị':")
for ten in ten_chuan:
if "Thị" in ten:
print(f"- {ten}")Ví dụ 2: Phân tích email
python
# Danh sách email
emails = [
"an@gmail.com",
"binh@yahoo.com",
"chi@gmail.com",
"dung@outlook.com",
"em@gmail.com"
]
print("📧 PHÂN TÍCH EMAIL")
print("=" * 25)
gmail_count = 0
yahoo_count = 0
outlook_count = 0
print("Chi tiết email:")
for email in emails:
# Tách tên và domain
parts = email.split("@")
ten_user = parts[0]
domain = parts[1]
print(f"User: {ten_user.ljust(8)} | Domain: {domain}")
# Đếm theo nhà cung cấp
if email.endswith("@gmail.com"):
gmail_count += 1
elif email.endswith("@yahoo.com"):
yahoo_count += 1
elif email.endswith("@outlook.com"):
outlook_count += 1
print("-" * 25)
print("Thống kê nhà cung cấp:")
print(f"Gmail: {gmail_count}")
print(f"Yahoo: {yahoo_count}")
print(f"Outlook: {outlook_count}")
# Tìm domain phổ biến nhất
if gmail_count >= yahoo_count and gmail_count >= outlook_count:
pho_bien = "Gmail"
elif yahoo_count >= outlook_count:
pho_bien = "Yahoo"
else:
pho_bien = "Outlook"
print(f"Phổ biến nhất: {pho_bien}")Ví dụ 3: Làm sạch văn bản
python
# Văn bản cần làm sạch
van_ban = """
Python là ngôn ngữ lập trình.
PYTHON rất dễ học!!!
python được dùng nhiều???
"""
print("🧹 LÀM SẠCH VĂN BẢN")
print("=" * 25)
print("Văn bản gốc:")
print(repr(van_ban))
# Làm sạch từng bước
# 1. Loại bỏ khoảng trắng đầu cuối
sach_1 = van_ban.strip()
# 2. Thay thế ký tự đặc biệt
sach_2 = sach_1.replace("!!!", ".")
sach_3 = sach_2.replace("???", ".")
# 3. Thay thế nhiều dấu cách thành 1
while " " in sach_3:
sach_3 = sach_3.replace(" ", " ")
# 4. Chuẩn hóa "python" thành "Python"
sach_4 = sach_3.replace("python", "Python")
sach_5 = sach_4.replace("PYTHON", "Python")
print("\nVăn bản đã sạch:")
print(repr(sach_5))
print("\nHiển thị đẹp:")
for dong in sach_5.split("\n"):
dong_sach = dong.strip()
if dong_sach: # Bỏ dòng trống
print(f"• {dong_sach}")
# Thống kê
so_tu = len(sach_5.split())
so_python = sach_5.count("Python")
print(f"\nThống kê:")
print(f"- Số từ: {so_tu}")
print(f"- Số lần nhắc 'Python': {so_python}")🏋️ Thực hành
Bài tập 1: Chuyển đổi định dạng
python
# Chuyển tên thành chữ đầu hoa
ten = "nguyễn văn minh"
ten_chuan = ten.title()
print(f"Tên chuẩn: {ten_chuan}")Bài tập 2: Tìm từ trong câu
python
# Tìm từ "Python" trong câu
cau = "Tôi đang học Python"
vi_tri = cau.find("Python")
print(f"'Python' ở vị trí: {vi_tri}")Bài tập 3: Tách và ghép
python
# Tách địa chỉ email
email = "student@school.edu"
parts = email.split("@")
user = parts[0]
domain = parts[1]
print(f"User: {user}, Domain: {domain}")📋 Tóm tắt
Nhóm methods theo chức năng:
| Nhóm | Methods | Chức năng |
|---|---|---|
| Định dạng | upper(), lower(), title(), capitalize() | Thay đổi chữ hoa/thường |
| Tìm kiếm | find(), count(), startswith(), endswith() | Tìm vị trí, đếm |
| Cắt ghép | split(), join(), strip() | Tách/ghép chuỗi |
| Thay thế | replace() | Thay đổi nội dung |
Methods thường dùng:
python
text = " Hello World "
# Làm sạch
text.strip() # "Hello World"
text.replace("o", "0") # " Hell0 W0rld "
# Định dạng
text.upper() # " HELLO WORLD "
text.title() # " Hello World "
# Tách ghép
text.split() # ["Hello", "World"]
"-".join(["a", "b"]) # "a-b"Lưu ý quan trọng:
- String immutable: Methods tạo string mới, không thay đổi gốc
- Case sensitive:
find()phân biệt hoa thường - Return -1:
find()trả về -1 nếu không tìm thấy - Chain methods: Có thể nối methods:
text.strip().upper()
Chuẩn bị cho bài tiếp theo:
Bài tiếp theo sẽ học về 🔍 Xử lý chuỗi nâng cao và regex!
💡 Mẹo: String methods không thay đổi chuỗi gốc, nhớ gán lại biến!
🧵 Thực hành: Thử làm sạch danh sách tên có nhiều lỗi định dạng!