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