Chuỗi Python maketrans ()

Phương thức string maketrans () trả về một bảng ánh xạ để dịch có thể sử dụng cho phương thức translate ().

Nói một cách dễ hiểu, maketrans()phương thức là một phương thức tĩnh tạo ánh xạ 1-1 của một ký tự để dịch / thay thế nó.

Nó tạo ra một biểu diễn Unicode của mỗi ký tự để dịch.

Ánh xạ dịch này sau đó được sử dụng để thay thế một ký tự thành ký tự được ánh xạ của nó khi được sử dụng trong phương thức translate ().

Cú pháp của maketrans()phương thức là:

 string.maketrans (x (, y (, z)))

Ở đây, y và z là các đối số tùy chọn.

Tham số chuỗi maketrans ()

maketrans() phương thức nhận 3 tham số:

  • x - Nếu chỉ cung cấp một đối số, đối số đó phải là một từ điển.
    Từ điển phải chứa một ánh xạ 1-1 từ một chuỗi ký tự đơn lẻ đến bản dịch HOẶC số Unicode (97 cho 'a') sang bản dịch của nó.
  • y - Nếu truyền hai đối số thì nó phải là hai chuỗi có độ dài bằng nhau.
    Mỗi ký tự trong chuỗi đầu tiên là một sự thay thế cho chỉ mục tương ứng của nó trong chuỗi thứ hai.
  • z - Nếu ba đối số được truyền, mỗi ký tự trong đối số thứ ba được ánh xạ tới Không có.

Giá trị trả về từ Chuỗi maketrans ()

Các maketrans()phương thức trả về một bảng dịch với một 1-to-1 lập bản đồ của một thứ tự Unicode để dịch nó / thay thế.

Ví dụ 1: Bảng dịch sử dụng từ điển với maketrans ()

 # example dictionary dict = ("a": "123", "b": "456", "c": "789") string = "abc" print(string.maketrans(dict)) # example dictionary dict = (97: "123", 98: "456", 99: "789") string = "abc" print(string.maketrans(dict))

Đầu ra

 (97: '123', 98: '456', 99: '789') (97: '123', 98: '456', 99: '789') 

Ở đây, một dict từ điển được định nghĩa. Nó chứa một ánh xạ các ký tự a, b và c tới 123, 456 và 789 tương ứng.

maketrans() tạo một ánh xạ thứ tự Unicode của ký tự với bản dịch tương ứng của nó.

Vì vậy, 97 ('a') được ánh xạ thành '123', 98 'b' thành 456 và 99 'c' thành 789. Điều này có thể được chứng minh từ đầu ra của cả hai từ điển.

Ngoài ra, nếu hai hoặc nhiều ký tự được ánh xạ trong từ điển, nó sẽ tạo ra một ngoại lệ.

Ví dụ 2: Bảng dịch sử dụng hai chuỗi với maketrans ()

 # first string firstString = "abc" secondString = "def" string = "abc" print(string.maketrans(firstString, secondString)) # example dictionary firstString = "abc" secondString = "defghi" string = "abc" print(string.maketrans(firstString, secondString))

Đầu ra

 (97: 100, 98: 101, 99: 102) ValueError: hai đối số maketrans đầu tiên phải có độ dài bằng nhau 

Ở đây đầu tiên, hai chuỗi có độ dài bằng nhau abcdefđược xác định. Và bản dịch tương ứng được tạo ra.

Chỉ in bản dịch đầu tiên cung cấp cho bạn một ánh xạ 1-1 đối với thứ tự Unicode của mỗi ký tự trong Chuỗi đầu tiên đến cùng một ký tự được lập chỉ mục trên Chuỗi thứ hai.

Trong trường hợp này, 97 ('a') được ánh xạ thành 100 ('d'), 98 ('b') thành 101 ('e') và 99 ('c') thành 102 ('f').

Việc cố gắng tạo một bảng dịch cho các chuỗi có độ dài không bằng nhau làm nảy sinh một ValueErrorngoại lệ chỉ ra rằng các chuỗi phải có độ dài bằng nhau.

Ví dụ 3: Bảng tịnh tiến với chuỗi di động với maketrans ()

 # first string firstString = "abc" secondString = "def" thirdString = "abd" string = "abc" print(string.maketrans(firstString, secondString, thirdString))

Đầu ra

 (97: Không có, 98: Không có, 99: 102, 100: Không có) 

Ở đây, đầu tiên, ánh xạ giữa hai chuỗi firstString và secondString được tạo.

Sau đó, đối số thứ ba thirdString đặt lại ánh xạ của từng ký tự trong đó Nonevà cũng tạo ánh xạ mới cho các ký tự không tồn tại.

Trong trường hợp này, thirdString đặt lại ánh xạ của 97 ('a') và 98 ('b') thành None, đồng thời tạo ánh xạ mới cho 100 ('d') được ánh xạ tới None.

thú vị bài viết...