[pyar] Resumen de pyar, Vol 15, Envío 63

Wuelfhis Asuaje wasuaje en hotmail.com
Jue Mayo 12 12:50:46 ART 2011




> 
> Message: 1
> Date: Thu, 12 May 2011 10:43:59 -0300
> From: Facundo Batista <facundobatista en gmail.com>
> Subject: Re: [pyar] Punto en miles y millones
> To: Python Argentina <pyar en python.org.ar>
> Message-ID: <BANLkTinGtriSi3Yt=3RH1GTXhU1bgKORcA en mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
> 
> 2011/5/12 Ignacio López <lopezignacio en gmail.com>:
> 
> > Hola gente, soy absolutamente nuevo en python y en la lista. Estoy
> > intentando formatear un string de números enteros y agregarle los puntos en
> > los miles y millones. Osea aplicarle una mascara "###.###.###".
> 
> Mirá la primer receta acá:
> 
>   http://docs.python.org/library/decimal.html#recipes
> 
> Slds.
> 
> -- 
> .    Facundo
> 
> Blog: http://www.taniquetil.com.ar/plog/
> PyAr: http://www.python.org/ar/

Me van a disculpar los Pythoneros pero esta clase gigante comparado con un simple

echo numberformat(123456789,0,'.',' ',4);    //resultado = 1 2345 6789


Dejandonos muy atrás en cuanto a poder del lenguaje, ,usabilidad, practicidad y RAD. De paso haciendo muy dificil el desarrollo de aplicaciones de tipo financiera, contable, caja banco ,etc.

Que piensan?

Aqui el "Recipe que recomiendan" (de terror)

def moneyfmt(value, places=2, curr='', sep=',', dp='.',
             pos='', neg='-', trailneg=''):
    """Convert Decimal to a money formatted string.

    places:  required number of places after the decimal point
    curr:    optional currency symbol before the sign (may be blank)
    sep:     optional grouping separator (comma, period, space, or blank)
    dp:      decimal point indicator (comma or period)
             only specify as blank when places is zero
    pos:     optional sign for positive numbers: '+', space or blank
    neg:     optional sign for negative numbers: '-', '(', space or blank
    trailneg:optional trailing minus indicator:  '-', ')', space or blank

    >>> d = Decimal('-1234567.8901')
    >>> moneyfmt(d, curr='$')
    '-$1,234,567.89'
    >>> moneyfmt(d, places=0, sep='.', dp='', neg='', trailneg='-')
    '1.234.568-'
    >>> moneyfmt(d, curr='$', neg='(', trailneg=')')
    '($1,234,567.89)'
    >>> moneyfmt(Decimal(123456789), sep=' ')
    '123 456 789.00'
    >>> moneyfmt(Decimal('-0.02'), neg='<', trailneg='>')
    '<0.02>'

    """
    q = Decimal(10) ** -places      # 2 places --> '0.01'
    sign, digits, exp = value.quantize(q).as_tuple()
    result = []
    digits = map(str, digits)
    build, next = result.append, digits.pop
    if sign:
        build(trailneg)
    for i in range(places):
        build(next() if digits else '0')
    build(dp)
    if not digits:
        build('0')
    i = 0
    while digits:
        build(next())
        i += 1
        if i == 3 and digits:
            i = 0
            build(sep)
    build(curr)
    build(neg if sign else pos)
    return ''.join(reversed(result))
 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110512/3dc6e758/attachment.html>


More information about the pyar mailing list