Python String maketrans() 方法



Python String maketrans() 方法创建一个包含多个字符的映射信息的翻译表。然后,translate() 函数使用此转换表将这些字符替换为表中的相应字符。

为了更深入地研究,maketrans() 方法采用两个字符串:一个包含实际字符,另一个包含要映射的字符。对一个字符串中的字符到另一个字符串中的对应字符执行一对一映射。将创建一个转换表以相应地将这些值搁置在其中。

注意 − 此方法使用的两个字符串必须具有相同的长度。

语法

以下是 Python String maketrans() 方法的语法 -


 str.maketrans(x[, y[, z]])

参数

  • x − 这是具有实际字符的字符串。
  • y − 这是具有相应映射字符的字符串。
  • z − 这是一个字符串。它是一个可选的第三个参数。如果传递,则此字符串中的每个字符都将映射到 None。

返回值

此方法返回一个 translate 表,以便与 translate() 函数一起使用。

如果我们将元音字符串作为 intab 参数传递,将编号字符串作为 outtab 参数传递,则生成的字符串的元音字符将替换为相应的数字。

以下示例显示了 Python String maketrans() 方法的用法。在这里,我们创建两个字符串:“aeiou”和“12345”。另一个字符串 “this is string example....Wow!!“来执行翻译。maketrans() 方法将 “aeiou” 和 “12345” 作为参数,并生成一个包含这些字符串的映射字符的翻译表。稍后调用 translate() 方法以生成翻译后的字符串


intab = "aeiou"
outtab = "12345"
	
str = "this is string example....wow!!!"
trantab = str.maketrans(intab, outtab)
print("Translation Table: ")
print(trantab)
print()

#using trantab on translate() function
print(str.translate(trantab))

当我们运行上述程序时,它会产生以下结果——

Translation Table:
{97: 49, 101: 50, 105: 51, 111: 52, 117: 53}

th3s 3s str3ng 2x1mpl2....w4w!!!

如果我们将 intab 和 outtab 参数作为字典一起传递给该方法,则翻译表将作为另一个字典返回。

在此示例中,将创建输入字符串 “Welcome to qikepu” 和一个字典。字典作为参数传递给 maketrans() 方法,并且翻译表以另一个字典的形式输出。


mydict = {'a': '1', 'b': '2', 'c': '3','d': '4','e': '5'}
	
str = "Welcome to qikepu"
print("Translation Table: ")
print(str.maketrans(mydict))
print()

#using trantab on translate() function
print(str.translate(str.maketrans(mydict)))

让我们编译并运行上面的程序,输出将显示如下 -

Translation Table:
{97: '1', 98: '2', 99: '3', 100: '4', 101: '5'}

W5l3om5 to Tutori1lspoint

当我们将两个不同长度的字符串作为参数传递给方法时,会引发 ValueError。

在这个给定的示例中,我们创建两个不同长度的字符串,并作为参数传递给该方法。创建另一个字符串,并将 maketrans() 方法应用于此字符串。由于两个字符串参数的长度不同,因此预计会引发 ValueError。


x = 'kjads'
y = 'jakjdk'
	
str = "Welcome to qikepu"
print(str.maketrans(x, y))

在执行上述程序时,输出如下 -


Traceback (most recent call last):
	 File "main.py", line 5, in	
print(str.maketrans(x, y))
ValueError: the first two maketrans arguments must have equal length

当我们向方法传递三个参数时,第一个字符串中的字符将映射到第二个字符串中的字符;而第三个字符串中的字符将映射到 None。

在下面的示例中,我们创建三个字符串并将它们作为参数传递给 maketrans() 方法。前两个字符串中的字符应一对一映射,而第三个字符串中的字符应映射到 None。


x = 'abcde'
y = '12345'
z = '!@#$%'
	
str = "Welcome to qikepu"
print(str.maketrans(x, y, z))

上述程序的输出如下 -

{97: 49, 98: 50, 99: 51, 100: 52, 101: 53, 33: None, 64: None, 35: None, 36: None, 37: None}