Python String maketrans ()

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 abce defsã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 ValueErrorexceçã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 Nonee 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.

Artigos interessantes...