• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python货币格式化方法

python 搞java代码 3年前 (2022-05-21) 28次浏览 已收录 0个评论

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

直接上代码。。。

from <a href="https://www.gaodaima.com/tag/decimal" title="查看更多关于decimal的文章" target="_blank">decimal</a> import *
def moneyfmt(value, <a href="https://www.gaodaima.com/tag/places" title="查看更多关于places的文章" target="_blank">places</a>=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=".")

www#gaodaima.com来源gao@daima#com搞(%代@#码网搞代码

结果:

1,234.45

很简单吧。。。

来源:搞代码网:原文地址:https://www.gaodaima.com


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python货币格式化方法
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址