def numBR(value): """ Recebe um ponto flutuante, converte em string e converte para a notação brasileira. Exemplo no template: Supondo que "meu_numero" tem o valor de 100.0: {{ meu_numero|numBR }} ---> 100,00 Supondo que "meu_numero" tem o valor de 3065.49: {{ meu_numero|numBR }} ---> 3.065,49 """ inteiro,decimal = value.split('.') _LEN_INT_OK = len(inteiro) > 3 #no mínimo duas casas decimais, mesmo se no "value" vier uma if len(decimal) == 1: decimal = "%d0" % int(decimal) lBuff =[] #lista buffer for i,numInt in enumerate(inteiro[::-1]): print i+1, numInt if (i+1) % 3 == 0 and _LEN_INT_OK: numInt = "%s." % numInt lBuff.append(numInt) numeroBr = ''.join(lBuff)[::-1] + ',' + decimal return numeroBr