Python 2.7.3
>>> print '%2.2f' % 0.1
0.10
我的文档说类型 % 应该与类型 f 相同,只是输入乘以 100。
>>> print '%2.2%' % 0.1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
Python 2.7.3
>>> print '%2.2f' % 0.1
0.10
我的文档说类型 % 应该与类型 f 相同,只是输入乘以 100。
>>> print '%2.2%' % 0.1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
使用新的格式表达式,它具有您所指的格式化程序
print "{:%}".format(0.1)
#10.000000%
如果你只想要整数部分,你可以使用精度规范
print "{:.0%}".format(0.1)
#10%
见文档
http://docs.python.org/2/library/string#formatspec
稍微扩展一下,新格式说明符确实比旧格式说明符更强大。首先,按顺序或名称调用参数非常简单
"play the {instrument} all {moment}, even if my {instrument} is old".format(moment='day', instrument='guitar')
#'play the guitar all day, even if my guitar is old'
然后,如文档中所见,可以访问对象的属性:
"the real component is {0.real} and the imaginary one is {0.imag}".format(3+4j)
#'the real component is 3.0 and the imaginary one is 4.0'
远不止这些,但你可以在文档中找到它,这很清楚。
print '%2.2%' % 0.1
告诉它格式字符串 (%) 中有 2 个占位符,所以你有一个抱怨
遇到了这个问题。.format
在 Python 3 中,您可以以与上述类似的方式简单地使用 fstrings(从而避免使用)。格式为:
print(f"{your_number:.n_decimals%}")
例如。
>>> print(f"{0.0350:.2%}")
3.50%