千位分隔符 Jinja2

问题描述 投票:0回答:2

我尝试使用 Jinja2 模板在 AsciiDoc 中打印变量,但找不到使用千位分隔符(空格或点)打印此数字的方法。这个数字以文本形式出现,我将其格式化为浮动,然后用我想要的小数打印它,但除此之外,我想用千位分隔符打印它。我就是这样做的:

### dc_max_avg_memory_usage.json.data.result[0].value[1] = 12345.6789

{{ '%0.0f'| format(dc_max_avg_memory_usage.json.data.result[0].value[1]|float) }} 

这会将数字打印为

12345.67
但我想要它像
12 345,67
12.345,67

有人可以帮助我吗?预先感谢!

templates format numbers jinja2 asciidoc
2个回答
3
投票

Jinja2 的

format
过滤器使用
printf
样式格式字符串。请参阅https://jinja.palletsprojects.com/en/2.11.x/templates/#format

Python的

format
函数功能比较多,可以使用逗号作为分组运算符。请参阅https://docs.python.org/3/library/string.html#format-specification-mini-language

在 Python 中,您可以:

print('{:,.2f}'.format(12345.6789))

为了能够在 Jinja 模板中使用 Python 的

format
,您必须创建一个自定义过滤器:

import jinja2

env = jinja2.Environment()

def commafy(value):
    """Applies thousands separator to floats, with 2 decimal places."""
    return '{:,.2f}'.format(float(value))

env.filters['commafy'] = commafy

template_string = """{{ mynum | commafy }}"""
template = env.from_string(template_string)
print(template.render(mynum='12345.6789'))

0
投票

您可以在 Jinja 模板中使用 Python 字符串格式化程序。这是示例代码:

{{ "{:0,.2f}".format(price) }}

问候!

© www.soinside.com 2019 - 2024. All rights reserved.