显示价格

2024-09-22 16:37:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到不同货币的价格,想显示巴西R$ 我的格式不起作用,显示如下:

价格:1.15..000,00雷亚尔美元

为了获得更好的灵活性,我将价格存储为一个字符串:price=db.StringProperty(verbose_name="price")

我试图实现我自己的过滤器,但没有成功: {{ ad.price|separate }} R$

def separate(n, sep='.'):
    ln = list(str(n))
    ln.reverse()
    newn = []
    while len(ln) > 3:
        newn.extend(ln[:3])
        newn.append(sep)
        ln = ln[3:]
    newn.extend(ln)
    newn.reverse()
    return "".join(newn)

你能帮我吗?我应该把过滤器取下来吗?我应该对输入强制执行一些正则表达式吗?指向我的站点的链接是http://www.koolbusiness.com/servead/4252196

更新:我正在考虑使用以下过滤器之一:

^{pr2}$

Tags: 字符串过滤器db格式货币价格pricesep
3条回答

您可以使用locale._override_localeconvdict来设置自己的覆盖:

>>> import locale
>>> locale.setlocale(locale.LC_MONETARY, 'pt_BR.UTF-8')
>>> locale.currency(1234.56)
'1234,56 R$'
>>> locale._override_localeconv.update({'p_cs_precedes': 1, 'n_cs_precedes': 1})
>>> locale.currency(1234.56)
'R$ 1234,56'

如果需要,可以在import locale之后使用locale._override_localeconv.update({'p_cs_precedes': 1, 'n_cs_precedes': 1})行。在

将价格存储为字符串是第一个问题。应该是十进制。如果您查看Python标准库文档Decimal,您将看到http://docs.python.org/library/decimal.html#recipes

那个moneyfmt食谱应该能满足你的需要

相关问题 更多 >