Python maketrans()和translate()函数

Python字符串 maketrans()

maketrans()方法返回可用于该方法的转换映射表translate()。这是一种静态方法,可创建字符到其转换/替换的一对一映射。此方法创建每个字符的Unicode表示形式以进行翻译。

maketrans()method的语法是-

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

字符串maketrans()参数

maketrans()方法具有3个参数。

x-在这种情况下,如果仅提供一个参数,则它必须是字典,并且字典应包含从单个字符串到其翻译的一对一映射,或者从Unicode数字(到“ a”为97)到其翻译。

y-在这种情况下,如果传递了两个参数,则必须是两个长度相等的字符串,并且第一个字符串中的每个字符都将替换第二个字符串中相应的索引。

z-在这种情况下,如果传递了三个参数,则第三个参数中的每个字符都将不映射。

从字符串返回值 maketrans()

此方法返回一个转换表,该表具有Unicode序数与其转换/替换的1对1映射。

例1

使用字典翻译表 maketrans()

范例程式码

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))

输出结果

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

解释-在此示例中,dict是字典,它包含字符a,b和c分别映射到123、456和789的映射。在maketrans()创建人物的Unicode的顺序与其对应的翻译的映射。因此,结果是97('a')映射到'123',98'b'映射到456和99'c'映射到789。

例2

使用两个字符串的转换表 maketrans()

示例

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))

输出结果

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

说明-在此示例中,定义了两个长度相等的字符串“ abc”和“ def”。然后,将创建相应的转换,并且仅打印第一个转换,即可将my_string1中每个字符的Unicode序号一对一映射到my_string2上的相同索引字符。

但是在这种情况下,将97('a')映射到100('d'),将98('b')映射到101('e'),将99('c')映射到102('f')并尝试为不等长的字符串创建转换表会引发ValueError异常,指示字符串必须具有相等的长度。

translate()。我们知道翻译表会将字符映射到其他字符。我们使用translate()Python中的方法在字符串中进行许多字符替换。首先,我们使用构建一个翻译字典,maketrans()并将其传递给翻译。

使用maketrans的Python程序,翻译

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

输出结果

{97: 100, 98: 101, 99: 102}
ddeeff

忽略,删除字符的Python程序

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

输出结果

123456789
12345612

适用rot13翻译的Python程序

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

输出结果

tnaqnys
gandalf