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 stringe = '''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