12 julho 2016

Templates com a biblioteca padrão de strings no Python

A algum tempo venho explorando a biblioteca padrão do Python e nos últimos dias tenho aprendido muitas coisas e usado também muitas coisas.

Suponhamos que você tem uma mensagem “quase que padrão” para aprensentar algo, um erro por exemplo. Mas algo pode mudar nessa mensagem, seja o número do erro ou algumas palavras. Algo como:

Ooops! Ocorreu um erro no arquivo parser.py.
[Code erro: 10]
Infos: https://doc.mylib.hi/?error=10

Pensa que você precisa apenas mudar o nome do arquivo, código de erro e a URL para informações (o infos).

Um dos jeitos de resolver isso é usar a classe Template que está na biblioteca de strings essa classe nada mais faz do que substítuir valores recebendo como parâmetro um dicionário. Exemplo:

import string
e = '''Ooops! Ocorreu um erro no arquivo $file_error.
[Code erro: $error_code]
Infos: https://doc.mylib.hi/?error=$error_code
'''
d = {
    'file_error': 'parser.py',
    'error_code':  '10'
}
template = string.Template(e)
sub_render_template = template.substitute(d)
print(sub_render_template)

Em $ fica os valores que serão substituidos pela dicionário, e os valores chave do dicinionário precisam ter o menos nome, só que sem o $.

Esse é um dos jeitos de resolver um problema. Poderia ter usado format, mas perceba que se isso ficar maior será um pouco mais complicado dar manutenção no futuro.

Fontes

  • https://docs.python.org/2/library/string.html#template-strings


Este texto foi originalmente publicado no Medium e posteriormente migrado para este site.