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.


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

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


  • 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.


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!!!" 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!!!"
trantab = str.maketrans(intab, outtab)
print("Translation Table: ")

#using trantab on translate() function

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


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

#using trantab on translate() function

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


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 "", line 5, in 
print(str.maketrans(x, y))
ValueError: the first two maketrans arguments must have equal length


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}
Kickstart Your Career

Get certified by completing the course

Get Started