O método string maketrans () retorna uma tabela de mapeamento para tradução utilizável para o método translate ().
Em termos simples, o maketrans()
método é um método estático que cria um mapeamento um a um de um caractere para sua tradução / substituição.
Ele cria uma representação Unicode de cada caractere para tradução.
Este mapeamento de tradução é então usado para substituir um caractere por seu caractere mapeado quando usado no método translate ().
A sintaxe do maketrans()
método é:
string.maketrans (x (, y (, z)))
Aqui, y e z são argumentos opcionais.
Parâmetros de maketrans () de string
maketrans()
método leva 3 parâmetros:
- x - Se apenas um argumento for fornecido, ele deve ser um dicionário.
O dicionário deve conter um mapeamento 1-para-1 de uma única string de caracteres para sua tradução OU um número Unicode (97 para 'a') para sua tradução. - y - Se dois argumentos são passados, deve ser duas strings com o mesmo comprimento.
Cada caractere na primeira string é uma substituição para seu índice correspondente na segunda string. - z - Se três argumentos são passados, cada caractere no terceiro argumento é mapeado para Nenhum.
Valor de retorno de String maketrans ()
O maketrans()
método retorna uma tabela de tradução com um mapeamento 1 para 1 de um ordinal Unicode para sua tradução / substituição.
Exemplo 1: tabela de tradução usando um dicionário com maketrans ()
# example dictionary dict = ("a": "123", "b": "456", "c": "789") string = "abc" print(string.maketrans(dict)) # example dictionary dict = (97: "123", 98: "456", 99: "789") string = "abc" print(string.maketrans(dict))
Resultado
(97: '123', 98: '456', 99: '789') (97: '123', 98: '456', 99: '789')
Aqui, um dicionário ditado é definido. Ele contém um mapeamento dos caracteres a, bec para 123, 456 e 789, respectivamente.
maketrans()
cria um mapeamento do ordinal Unicode do caractere para sua tradução correspondente.
Portanto, 97 ('a') é mapeado para '123', 98 'b' para 456 e 99 'c' para 789. Isso pode ser demonstrado pela saída de ambos os dicionários.
Além disso, se dois ou mais caracteres forem mapeados no dicionário, isso gerará uma exceção.
Exemplo 2: tabela de tradução usando duas strings com maketrans ()
# first string firstString = "abc" secondString = "def" string = "abc" print(string.maketrans(firstString, secondString)) # example dictionary firstString = "abc" secondString = "defghi" string = "abc" print(string.maketrans(firstString, secondString))
Resultado
(97: 100, 98: 101, 99: 102) ValueError: os primeiros dois argumentos do maketrans devem ter comprimento igual
Aqui, primeiro, duas cadeias de comprimento igual abc
e def
são definidas. E a tradução correspondente é criada.
Imprimir apenas a primeira tradução fornece um mapeamento 1 para 1 do ordinal Unicode de cada caractere em firstString para o mesmo caractere indexado em secondString.
Nesse caso, 97 ('a') é mapeado para 100 ('d'), 98 ('b') para 101 ('e') e 99 ('c') para 102 ('f').
Tentar criar uma tabela de tradução para strings de comprimento desigual levanta uma ValueError
exceção indicando que as strings devem ter comprimento igual.
Exemplo 3: tabela translacional com string removível com maketrans ()
# first string firstString = "abc" secondString = "def" thirdString = "abd" string = "abc" print(string.maketrans(firstString, secondString, thirdString))
Resultado
(97: Nenhum, 98: Nenhum, 99: 102, 100: Nenhum)
Aqui, primeiro, o mapeamento entre as duas strings firstString e secondString é criado.
Então, o terceiro argumento thirdString redefine o mapeamento de cada caractere nele None
e também cria um novo mapeamento para caracteres não existentes.
Nesse caso, thirdString redefine o mapeamento de 97 ('a') e 98 ('b') para None
, e também cria um novo mapeamento para 100 ('d') mapeado para None
.