首页 > PHP资讯 > Python培训 > python货币格式化方法

python货币格式化方法

Python培训

python开发中时长到货币格式化的问题,一般情况下可以使用locale模块。但是这个模块使用起来不是那么顺手,今天我为大家介绍一个很好用的方法。

直接上代码。。。

from decimal import *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>'     """    value = Decimal(value)    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)) print moneyfmt('1234.45',sep=',', dp='.')

结果:

1,234.45

很简单吧。。。

Python培训

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持50不支持0