Convertir Número a Formato Moneda con Python

Método para convertir un número int o float a un string con formato de moneda y separación de miles en Python.




  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-

  3.   

  4. # http://holamundopy.blogspot.com


  5. def SetMoneda(numsimbolo="US$"n_decimales=2):
  6.     """Convierte el numero en un string en formato moneda
  7.     SetMoneda(45924.457, 'RD$', 2) --> 'RD$ 45,924.46'     
  8.     """
  9.     #con abs, nos aseguramos que los dec. sea un positivo.
  10.     n_decimales abs(n_decimales)
  11.     
  12.     #se redondea a los decimales idicados.
  13.     num round(numn_decimales)

  14.     #se divide el entero del decimal y obtenemos los string
  15.     numdec str(num).split(".")

  16.     #si el num tiene menos decimales que los que se quieren mostrar,
  17.     #se completan los faltantes con ceros.
  18.     dec += "0" * (n_decimales len(dec))
  19.     
  20.     #se invierte el num, para facilitar la adicion de comas.
  21.     num num[::-1]
  22.     
  23.     #se crea una lista con las cifras de miles como elementos.
  24.     = [num[pos:pos+3][::-1for pos in range(0,50,3if (num[pos:pos+3])]
  25.     l.reverse()
  26.     
  27.     #se pasa la lista a string, uniendo sus elementos con comas.
  28.     num str.join(","l)
  29.     
  30.     #si el numero es negativo, se quita una coma sobrante.
  31.     try:
  32.         if num[0:2] == "-,":
  33.             num "-%s" num[2:]
  34.     except IndexError:
  35.         pass
  36.     
  37.     #si no se especifican decimales, se retorna un numero entero.
  38.     if not n_decimales:
  39.         return "%s %s" % (simbolonum)
  40.         
  41.     return "%s %s.%s" % (simbolonumdec)




  42. printSetMoneda(45924.457"RD$"2) )