如何解决千位分隔符 Jinja2
我尝试使用 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
有人可以帮我吗?提前致谢!
解决方法
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'))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。