1

我正在使用一个名为 streamlit 的第三方包,其中一个 API 可以根据以下内容在浏览器中绘制一个滑块:

streamlit.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None)

我创建的滑块可以采用整数值(即 1,000,000 或 10,000 等),上面的这个函数有一个可选参数,可以使用以下方式格式化这个整数printf

format (str or None) – A printf-style format string controlling how the interface should display numbers. This does not impact the return value. 
Valid formatters: %d %e %f %g %i

对于整数,1000000我可以将 printf 样式格式设置为,format="%d"但我希望输出看起来像1,000,000. 鉴于可用的格式限制,我似乎无法弄清楚是否有办法实现这一点。

4

2 回答 2

0

您可以使用 python 中可用的 string.format() 方法来执行此任务。

于 2020-03-30T16:32:47.603 回答
0

如果你有big_number = 100000.

python 3.7你可以做这样的事情:

print(f"{big_number:,d}")

在旧版本中:

print('{:,d}'.format(big_number))

输出将是:

100,000

我假设您希望rangestreamlit.slider(). 好吧,根据streamlit您在问题中所述的文档:

format(strNone) – 一种printf格式字符串,控制界面应如何显示数字。这不会影响返回值。有效的格式化程序:%d %e %f %g %i

因此,它似乎不支持整个printf样式规范,只支持那些没有flags的格式化程序。

即使在python 文档中, 他们也必须在使用时设置一些标志来实现这一点str.format()

笔记

当使用类型 (ex: )格式化数字 ( intfloat、和 ) 时complex,该函数临时将语言环境设置为要解码的语言环境和字段,如果它们是非 ASCII 或长于 1 字节,并且语言环境不同于语言环境。此临时更改会影响其他线程。decimal.Decimalsubclassesn'{:n}'.format(1234)LC_CTYPELC_NUMERICdecimal_pointthousands_seplocaleconv()LC_NUMERICLC_CTYPE

这与这个答案一致

于 2020-03-30T17:23:56.590 回答