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
很简单吧。。。
做猪小侠源码的代理,提供一站式服务
如果你不懂得搭建网站或者服务器,小程序,源码之类的怎么办? 第一通过本站学习各种互联网的技术 第二就是联系客服,我帮帮你搭建(当然要收取部分的费用) 第三成为我们的代理,我们提供整套的服务。