No módulo string
, a classe Template
nos permite criar sintaxe simplificada para especificação de saída. O formato usa nomes de placeholder formados por $
com identificadores Python válidos (caracteres alfanuméricos e sublinhados). Rodear o placeholder com colchetes permite que ele seja seguido por mais letras alfanuméricas sem espaços intermediários. Escrever $$
cria um único $ com escape.
String Template python
O modelo de string do Python é criado passando a string do modelo para seu construtor. Ele suporta substituições baseadas em $
. Esta classe possui 2 métodos principais:
- substitute(mapping, **kwds): Este método realiza substituições usando um dicionário com um processo semelhante a objetos de mapeamento baseados em chave. argumentos de palavra-chave também podem ser usados para o mesmo propósito. Caso o mapeamento baseado em chave e os argumentos de palavra-chave tenham a mesma chave, ele lança um TypeError. Se as chaves estiverem faltando, ele retornará um KeyError.
- substitute(mapping, **kwds): o comportamento deste método é semelhante ao do método substitute, mas não lança um KeyError se uma chave estiver faltando, em vez disso, ele retorna um marcador de posição na string de resultado.
O método substitute()
gera um KeyError
quando um espaço reservado não é fornecido em um dicionário ou em um argumento de palavra-chave. Para aplicativos de estilo mala direta, os dados fornecidos pelo usuário podem estar incompletos e o método safe_substitute()
pode ser mais apropriado - ele deixará os marcadores de posição inalterados se houver dados ausentes:
Abaixo estão alguns exemplos simples.
Exemplo 1:
# Um exemplo simples usando Template from string import Template # Cria um modelo que tenha espaço reservado para o valor de x t = Template('x é $x') # Valor substituto de x no modelo acima print(t.substitute({'x' : 1}))
Resultado:
x é 1
A seguir está outro exemplo em que importamos nomes e marcas de alunos de uma lista e os imprimimos usando um modelo.
Exemplo 2:
# Um programa Python para demonstrar o # funcionamento de Template from string import Template # Lista Aluno armazena o nome e as notas de três alunos Aluno = [('Ram',90), ('Ankit',78), ('Bob',92)] # Estamos criando uma estrutura básica para # imprimir o nome e as notas dos alunos. t = Template('Olá $nome, você tem a nota $nota') for i in Aluno: print (t.substitute(nome = i[0], nota = i[1]))
Resultado:
Olá Ram, você tem a nota 90 Olá Ankit, você tem a nota 78 Olá Bob, você tem a nota 92
O exemplo abaixo mostra a implementação do método safe_substitute()
.
Exemplo 3:
from string import Template template = Template('$nome é o novo $função da $empresa') string = template.safe_substitute(nome='Raju Kumar', empresa='TCE') print(string)
Resultado:
Raju Kumar é o novo $função da TCE
Observe que não fornecemos ao marcador de posição $função
quaisquer dados, mas isso não gerará um erro, em vez disso, retornará o marcador de posição como uma string, conforme discutido acima.
Imprimindo uma template String
O atributo “template
” do objeto Template
pode ser usado para retornar a string do template conforme mostrado abaixo:
Exemplo:
t = Template('Eu sou $nome e venho de $cidade') print('Template String =', t.template)
Resultado:
Template String = Eu sou $nome e venho de $cidade
Sinal de escape $
O $$
pode ser usado para escapar de $
e ser tratado como parte da string.
Exemplo:
template = Template('$$ é o simbolo usado para se referir ao $name') string = template.substitute(name='Dollar') print(string)
Resultado:
$ é o simbolo usado para se referir ao Dollar
O ${identificador}
O ${identificador}
funciona de forma semelhante ao de $identificador
. É útil quando caracteres identificadores válidos seguem o espaço reservado, mas não fazem parte do espaço reservado.
Exemplo:
template = Template('That $noun looks ${noun}y') string = template.substitute(noun='Fish') print(string)
Resultado:
That Fish looks Fishy
Outra aplicação para template é separar a lógica do programa dos detalhes de vários formatos de saída. Isso torna possível substituir modelos personalizados por arquivos XML, relatórios de texto simples e relatórios da web em HTML.
Observe que existem outras maneiras de imprimir a saída formatada como %d para inteiro, %f para flutuante.
Referência: https://docs.python.org/3.3/tutorial/stdlib2.html
Artigo escrito por Siddharth Lalwani e traduzido por Acervo Lima de String Template Class in Python
0 comentários:
Postar um comentário