Tách thành danh sách xâu
`" đỏ xanh ".split()` cho `["đỏ", "xanh"]`: khi không truyền dấu tách, Python gom nhiều khoảng trắng liên tiếp và bỏ khoảng trắng ở hai đầu. `"2,4,6".split(",")` cho `["2", "4", "6"]`, **chưa phải** các số nguyên. Muốn cộng số phải đổi từng xâu bằng `int`. Nếu đầu vào rỗng hoặc chỉ có khoảng trắng, `split()` cho list rỗng.
Bài luyện
`" đỏ xanh ".split()` cho kết quả nào?
split() mặc định tách theo các cụm khoảng trắng.
Các khoảng trắng thừa không tạo mục rỗng ở cách gọi này.
Kết quả split là list, không là xâu.
Có hai từ riêng.
Lời giải
Không truyền kí tự tách, `split()` tách theo khoảng trắng và bỏ phần trống ở hai đầu, nên được hai xâu `"đỏ"`, `"xanh"`.
Bài luyện
`"2,4,6".split(",")` tạo phần tử đầu thuộc kiểu nào?
split không tự đổi chữ số thành int.
Không tự đổi thành float.
Phần tử đầu là xâu "2".
Không có phép so sánh.
Lời giải
split tách **xâu** thành các xâu nhỏ. Phần tử đầu là `"2"` kiểu str; cần `int("2")` nếu muốn số 2.
Nối danh sách xâu bằng một dấu rõ ràng
`" - ".join(["đỏ", "xanh"])` cho `"đỏ - xanh"`. Xâu trước `.join` là dấu nối đặt **giữa** các phần tử, không đặt ở đầu/cuối. Mọi phần tử của list phải là xâu; `",".join([2, 4])` báo `TypeError` vì đó là số nguyên. Chuyển số sang chữ trước nếu cần ghép.
Nhiệm vụ: tạo `chuan-hoa-khoang-trang.py`, chạy với dữ liệu mẫu và xem kết quả:
```python
s = " sách vở bút "
tu = s.split()
ket_qua = " ".join(tu)
print(ket_qua)
```
Kết quả là `sách vở bút`, mỗi cặp từ có đúng một dấu cách. Với s rỗng, kết quả cũng rỗng. Nếu muốn giữ nguyên xuống dòng hoặc khoảng trắng đặc biệt, cách chuẩn hóa này không phù hợp vì nó đã gom chúng lại.
Bài luyện
Mã chuẩn hóa trong bài in dòng nào?
split tách các từ, join nối bằng một dấu cách.
Khoảng trắng thừa đã bị bỏ/gom.
Dấu nối được chọn là khoảng trắng, không phải gạch.
Lệnh print in ket_qua là xâu, không in list tu.
Lời giải
`split()` cho ba từ `sách`, `vở`, `bút`. `" ".join(tu)` đặt một dấu cách giữa các từ, nên in `sách vở bút`.
Bài luyện
Vì sao `",".join([2, 4])` báo lỗi?
Dấu phẩy là dấu nối hợp lệ.
join không tự đổi số nguyên thành xâu.
Hai phần tử vẫn ghép được nếu là xâu.
join dùng được với list có phần tử xâu.
Lời giải
`join` ghép các xâu. `[2,4]` chứa số nguyên, nên cần đổi thành `["2","4"]` hoặc dùng `str` trước khi ghép.
Đang học