Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Xóa ký tự khỏi chuỗi trong Python: Hướng dẫn chi tiết

Xóa ký tự khỏi chuỗi trong Python: Hướng dẫn chi tiết

Bạn có thể xóa ký tự khỏi chuỗi Python dùng replace() hoặc translate(). Cả hai phương thức thay thế ký tự hoặc chuỗi bằng giá trị cho trước. Nếu chuỗi rỗng được chỉ định, ký tự hoặc chuỗi bạn chọn bị xóa khỏi chuỗi mà không có thay thế.

Xóa ký tự khỏi chuỗi Python

Không phải chuỗi nào cũng chứa giá trị ta muốn. Người dùng có thể chèn ký hiệu vào trường nhập mà bạn không muốn xuất hiện. Bạn có thể muốn xóa mọi trường hợp của một ký tự cụ thể khỏi chuỗi.

Không quan trọng ký tự nào bạn muốn xóa. Python hỗ trợ bạn!

Trong hướng dẫn này, ta thảo luận cách xóa ký tự hoặc tập hợp ký tự khỏi chuỗi. Ta tham khảo vài ví dụ dọc theo đường.

Ta sẽ thảo luận các cách sau:

  • Dùng phương thức replace()
  • Dùng phương thức translate()
  • Xóa ký tự cuối dùng chỉ số (indexing)

Hãy bắt đầu!

Xóa ký tự khỏi chuỗi Python: replace()

Hàm replace() của chuỗi thay thế ký tự bằng ký tự mới. Hàm này có thể dùng thay thế bất kỳ ký tự nào bằng chuỗi rỗng.

Ta xây dựng chương trình yêu cầu người dùng nhập tên người dùng. Ký tự gạch dưới (_) không được phép trong tên người dùng. Mở file Python mới và dán mã sau:

username = input("Chọn tên người dùng: ")
final_username = username.replace("_", "")
print("Tên người dùng của bạn là: " + final_username)

Mã này yêu cầu người dùng chọn tên dùng input().

Phương thức replace() xóa ký tự gạch dưới từ chuỗi gốc và thay thế tất cả trường hợp của ký tự đó bằng chuỗi rỗng. Sau đó, ta in tên người dùng không có gạch dưới ra màn hình.

Chạy chương trình:

Chọn tên người dùng: pythonista_101
Tên người dùng của bạn là: pythonista101

Mã đã xóa ký tự gạch dưới từ tên người dùng ta chỉ định. Mã hoạt động trên chuỗi không chứa gạch dưới:

Chọn tên người dùng: pythonista101
Tên người dùng của bạn là: pythonista101

Khi tên người dùng không chứa gạch dưới, không có gì xảy ra.

Xóa nhiều ký tự dùng replace()

Điều gì xảy ra nếu bạn muốn xóa nhiều ký tự khỏi chuỗi? Python giúp bạn. Ta có thể dùng replace() bên trong vòng lặp for để xóa nhiều ký tự.

Trong ví dụ trước, ta xóa gạch dưới khỏi tên người dùng. nếu ta muốn xóa tất cả dấu chấm (full stops), gạch dưới, và dấu chấm than khỏi chuỗi? Tạo file Python mới và dán mã:

username = input("Chọn tên người dùng: ")
disallowed_characters = "._!"
for character in disallowed_characters:
    username = username.replace(character, "")
print("Tên người dùng của bạn là: " + username)

Đầu tiên, ta yêu cầu người dùng chọn tên. Ta định nghĩa chuỗi chứa tất cả ký tự không nên xuất hiện trong tên người dùng.

Tiếp theo, ta tạo vòng lặp for. Vòng lặp lặp qua mỗi ký tự trong chuỗi "disallowed_characters". Mỗi lần lặp, ký tự mà vòng lặp đang lặp qua sẽ được thay thế trong chuỗi "username" bằng ký tự rỗng.

Chạy mã:

Chọn tên người dùng: pythonista.101!!!
Tên người dùng của bạn là: pythonista101

Mã đã lọc bỏ dấu chấm và dấu chấm than.

Xóa ký tự khỏi chuỗi Python: translate()

Phương thức translate() của Python thay thế ký tự trong chuỗi theo nội dung bảng ký tự. Phương thức nhận một đối số: bảng dịch với ký tự ánh xạ.

Để dùng phương thức này, ta cần tạo bảng dịch. Bảng này chỉ định ký tự nào nên được thay thế trong chuỗi.

Hãy dùng translate() xóa tất cả gạch dưới từ tên người dùng:

username = input("Chọn tên người dùng: ")
final_username = username.translate({ ord("_"): None })
print("Tên người dùng của bạn là: " + final_username)

Mã này thay thế mọi trường hợp ký tự "_" bằng giá trị None. Phương thức ord() của Python trả về mã Unicode liên kết với ký tự "_". Điều này được translate() dùng để xác định ký tự ta muốn xóa.

Xóa nhiều ký tự dùng translate()

Bạn có thể xóa nhiều ký tự khỏi chuỗi dùng translate().

Ta làm bằng cách tạo iterator lặp qua danh sách ký tự ta muốn xóa khỏi chuỗi.

Hãy xóa tất cả gạch dưới, dấu chấm, và dấu chấm than khỏi tên người dùng:

username = input("Chọn tên người dùng: ")
final_username = username.translate({ ord(c): None for c in "._!" })
print("Tên người dùng của bạn là: " + final_username)

Phương thức translate() kiểm tra xem mỗi ký tự trong chuỗi "username" có bằng dấu chấm, dấu chấm than, hay gạch dưới không. Nếu tìm thấy ký tự này, nó thay bằng None. Điều này xóa ký tự khỏi chuỗi.

Ta dùng list comprehension Python lặp qua mỗi ký tự trong danh sách ký tự loại trừ.

Thử chương trình:

Chọn tên người dùng: pythonista_100!
Tên người dùng của bạn là: pythonista101

Mã đã xóa thành công tất cả ký tự đặc biệt ta chỉ định khỏi chuỗi.

Python: Xóa ký tự cuối khỏi chuỗi

Để xóa ký tự cuối khỏi chuỗi, dùng ký hiệu cắt lát [:-1]. Ký hiệu này chọn ký tự tại vị trí chỉ số -1 (ký tự cuối trong list). Sau đó, cú pháp trả về mọi ký tự trừ cái đó.

Cú pháp xóa ký tự cuối khỏi chuỗi:

your_string = "A string"
print(your_string[:-1])

Ví dụ xóa ký tự cuối

Ta muốn xây dựng chương trình xóa ký tự cuối khỏi mã định danh nhân viên. Ký tự này cho biết nhân viên làm việc cho phòng ban nào.

Ví dụ, giá trị "M" cho biết nhân viên làm cho bộ phận marketing. Ta sẽ xóa ký tự này. Hệ thống theo dõi nhân viên này được thay thế bằng hệ thống mới. Hệ thống mới theo dõi phòng ban nhân viên làm việc.

Hãy bắt đầu bằng yêu cầu người dùng nhập mã định danh nhân viên dùng input():

identifier = input("Mã định danh nhân viên là gì? ")

Tiếp theo, xóa ký tự cuối khỏi mã định danh:

new_identifier = identifier[:-1]

[:-1] là thao tác cắt chuỗi xóa ký tự cuối khỏi list. Ta dùng chỉ số âm lấy mục từ cuối chuỗi. Bây giờ, hiển thị mã định danh mới của nhân viên ra màn hình:

print("Mã định danh mới của nhân viên là {}.".format(new_identifier))

Câu lệnh format() thay thế ngoặc nhọn trong chuỗi bằng mã định danh mới. Chạy mã xem kết quả:

Mã định danh nhân viên là gì? 28371M
Mã định danh mới của nhân viên là 28371.

Chương trình xóa giá trị cuối trong mã định danh nhân viên.

Kết luận

Bạn có thể xóa ký tự hoặc nhiều ký tự khỏi chuỗi dùng replace() hoặc translate(). Cả replace() và translate() trả về cùng kết quả: chuỗi không có ký tự bạn chỉ định.

Đối với người mới, phương thức replace() dễ dùng hơn. Vì nó chỉ nhận hai tham số.

Tham số đầu là ký tự bạn muốn thay thế. Tham số hai là giá trị bạn muốn thay thế ký tự. Nếu muốn thay thế nhiều ký tự, bạn có thể dùng vòng lặp for.

Bạn quan tâm tìm hiểu thêm về Python? Xem hướng dẫn hoàn chỉnh "Cách học Python" để có mẹo chuyên gia giúp bạn tiến bộ hành trình học tập.