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货币格式化方法 的全部内容, 来源链接: utcz.com/z/523551.html