Python3和Python2的格式化是不同的,Python3中主要使用内置的format和str.format函数。

内置的format() 函数和str.format()方法把各个类型的格式化方式委托给相应的.format(format_spec)方法。format_spec是格式说明符,它是:

  • format(my_obj, format_spec) 的第二个参数,或者
  • str.format() 方法的格式字符串,{} 里代换字段中冒号后面的部分

使用示例:

>>> rmb = 1/6.58
>>> rmb
0.1519756838905775
>>> format(rmb, '0.4f')
'0.1520'
>>> '1 RMB = {:0.2f} USD'.format(rmb)
'1 RMB = 0.15 USD'
>>> '1 RMB = {rate:0.2f} USD'.format(rate=rmb)
'1 RMB = 0.15 USD'
>>> format(rmb, '.4f')
'0.1520'
>>> '1 RMB = {rate:.2f} USD'.format(rate=rmb)
'1 RMB = 0.15 USD'
>>> '1 RMB = {:.2f} USD'.format(rmb)
'1 RMB = 0.15 USD'
>>> '1 RMB = %.2f USD' % rmb   # Python2
'1 RMB = 0.15 USD'
>>> format(42, 'b')
'101010'
>>> format(2/3, '.1%')
'66.7%'
>>> from datetime import datetime
>>> now = datetime.now()
>>> format(now, '%H:%M:%S')
'13:21:08'
>>> "It's now {:%I:%M %p}".format(now)
"It's now 01:21 PM"
>>> '{:,}'.format(1234567890)
'1,234,567,890'

更多使用细节,参照官方文档:

涉及到的主要知识点是格式规范微语言(Format Specification Mini-Language)的理解。