Python String maketrans() Method



The Python String maketrans() method creates a translation table that contains mapping information of several characters. This translation table is then used by the translate() function to replace these characters with their corresponding characters in the table.

To delve deeper, the maketrans() method takes two strings: one containing actual characters and the other containing characters to map. A one-to-one mapping is performed on characters in one string to their corresponding characters in another string. A translation table is created to shelve these values in it accordingly.

Note − Both strings used by this method must have the same length.

Syntax

Following is the syntax for Python String maketrans() method −

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

Parameters

  • x − This is the string having actual characters.

  • y − This is the string having corresponding mapping character.

  • z − This is a string. It is an optional third parameter. If passed, each character in this string will be mapped to None.

Return Value

This method returns a translate table to be used with translate() function.

Example

If we pass a vowel string as the intab parameter and numbered string as the outtab parameter, the resultant string will have its vowel characters replaced by their corresponding numbers.

The following example shows the usage of Python String maketrans() method. In here, we create two strings: "aeiou" and "12345". Another string "this is string example....wow!!!" is also created to perform the translation. The maketrans() method takes "aeiou" and "12345" as arguments and generates a translation table containing mapped characters of these strings. The translate() method is later called to produce the translated string.

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

When we run above program, it produces following result −

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

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

Example

If we pass the intab and outtab parameters together as a dictionary to the method, the translation table is returned as another dictionary.

In this example, the input string "Welcome to Tutorialspoint" and a dictionary are created. The dictionary is passed as an argument to the maketrans() method and the translation table is outputted in the form of another dictionary.

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

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

Let us compile and run the program above, the output will be displayed as follows −

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

W5l3om5 to Tutori1lspoint

Example

When we pass two strings with different lengths as argument to the method, a ValueError is raised.

In this given example, we create two strings with different lengths and passed as arguments to the method. Another string is created and the maketrans() method is applied on this string. A ValueError is expected to be raised as the length of two string arguments are not same.

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

On executing the program above, the output is obtained as follows −

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

Example

When we pass three parameters to the method, characters from the first string are mapped to the characters in the second string; while, characters in the third string are mapped to None.

In the following example, we create three strings and pass them to the maketrans() method as arguments. The characters in the first two strings are expected to be mapped one to one, while the characters in the third string are mapped to None.

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

The output for the program above is obtained as follows −

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