Computer >> Máy Tính >  >> Lập trình >> Python

Các hàm maketrans () và translate () trong Python

Chuỗi Python maketrans ()

Phương thức maketrans () trả về một bảng ánh xạ để dịch có thể sử dụng được cho phương thức translate (). Đây là một phương thức tĩnh tạo ánh xạ 1-1 của một ký tự đến bản dịch / thay thế của nó. Phương pháp này tạo ra một biểu diễn Unicode của mỗi ký tự để dịch.

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

string.maketrans(x[, y[, z]])
y and z are optional arguments.

Tham số chuỗi maketrans ()

Phương thức maketrans () có 3 tham số.

x - Trong trường hợp này nếu chỉ có một đối số được cung cấp, nó phải là một từ điển và từ điển phải chứa ánh xạ 1-1 từ một chuỗi ký tự đến bản dịch HOẶC số Unicode (97 cho 'a') sang bản dịch của nó .

y - Trong trường hợp này nếu hai đối số được truyền, nó phải là hai chuỗi có độ dài bằng nhau và 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 - Trong trường hợp này nếu ba đối số được truyền, mỗi ký tự trong đối số thứ ba sẽ được ánh xạ tới không có đối số nào.

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

Phương thức này trả về một bảng dịch với ánh xạ 1-1 của một thứ tự Unicode đến bản dịch / thay thế của nó.

Ví dụ1

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

Mã mẫu

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

Đầu ra

{97: '123', 98: '456', 99: '789'}
{97: '123', 98: '456', 99: '789'}

Giải thích - Trong ví dụ này, dict là một từ điển và 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 ánh xạ thứ tự Unicode của ký tự với bản dịch tương ứng của nó. Vì vậy, kết quả là 97 ('a') được ánh xạ thành '123', 98 'b' thành 456 và 99 'c' thành 789.

Ví dụ2

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

Ví dụ

my_string1 = "abc"
my_string2 = "def"
string = "abc"
print(string.maketrans(my_string1, my_string2))
# Example dictionary
my_string1 = "abc"
my_string2 = "defghi"
string = "abc"
print(string.maketrans(my_string1, my_string2))

Đầu ra

{97: 100, 98: 101, 99: 102}
ValueError: the first two maketrans arguments must have equal length

Giải thích - Trong ví dụ này, hai chuỗi có độ dài bằng nhau "abc" và "def" được xác định. Và bản dịch tương ứng được tạo và chỉ in bản dịch đầu tiên cung cấp cho bạn ánh xạ 1-1 đối với thứ tự Unicode của mỗi ký tự trong my_string1 đến cùng một ký tự được lập chỉ mục trên my_string2.

Nhưng trong trường hợp này, 97 ('a') được ánh xạ thành 100 ('d'), 98 ('b') đến 101 ('e') và 99 ('c') thành 102 ('f') và thử để tạo bảng dịch cho các chuỗi có độ dài không bằng nhau sẽ làm tăng ngoại lệ ValueError cho biết rằng các chuỗi phải có độ dài bằng nhau.

dịch () . Chúng tôi biết rằng một bảng dịch ánh xạ các ký tự sang các ký tự khác. Chúng tôi sử dụng phương thức translate () trong Python để thực hiện nhiều ký tự thay thế trong chuỗi. Đầu tiên, chúng tôi xây dựng một từ điển dịch với maketrans () và chuyển nó để dịch.

Chương trình Python sử dụng maketrans, dịch

#Python program that uses maketrans, translate
dict = str.maketrans("abc", "def")
print(dict)
# Translate this value.
value = "aabbcc"
result = value.translate(dict)
print(result)

Đầu ra

Độ phân giải
{97: 100, 98: 101, 99: 102}
ddeeff

Chương trình Python bỏ qua, loại bỏ các ký tự

# Create translation table.
table = str.maketrans("78", "12", "9")
# Translate this string.
input = "123456789"
result = input.translate(table)
# Write results.
print(input)
print(result)

Đầu ra

123456789
12345612

Chương trình Python áp dụng bản dịch rot13

#Create translation table.
trans = str.maketrans("abcdefghijklmnopqrstuvwxyz","nopqrstuvwxyzabcdefghijklm")
# Apply rot13 translation.
print("gandalf".translate(trans))
print("gandalf".translate(trans).translate(trans))

Đầu ra

tnaqnys
gandalf