繁体   English   中英

格式字符串中的可变数字位数

[英]variable number of digit in format string

这是编写此格式化函数的简洁方法:

def percent(value,digits=0):
    return ('{0:.%d%%}' % digits).format(value)

>>> percent(0.1565)
'16%'

>>> percent(0.1565,2)
'15.65%'

问题是格式化具有给定位数的数字,我不喜欢同时使用'%'运算符和格式方法。

我喜欢这一个:

'{0:.{1}%}'.format(value, digits)

测试:

>> '{0:.{1}%}'.format(0.1565, 0)
'16%'
>> '{0:.{1}%}'.format(0.1565, 2)
'15.65%'

*printf风格的字符串格式化做你想要的

>>> def percent(value, digits=0):
...     return '%.*f%%' % (digits, value * 100)
...
>>> percent(0.1565, 2)
'15.65%'

高级字符串格式(在PEP 3101中定义并记录在7.1.3。格式字符串语法中 )似乎无法在一次传递中执行此操作。 (参见7.1.3.1。格式规范迷你语言precision仅为integer 。)

来自文档

最小字段宽度(可选)。 如果指定为'*'(星号),则从值的元组的下一个元素读取实际宽度,并且要转换的对象在最小字段宽度和可选精度之后。

例:

def percent(value, digits=0):
    print '%.*f%%' % (digits, value*100)
>>> percent(0.1565, 2)
15.65%

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM