选项 | 含义 |
---|
'<' | 强制字段在可用空间内左对齐(这是大多数对象的默认值)。 |
'>' | 强制字段在可用空间内右对齐(这是数字的默认值)。 |
'=' | 强制将填充放置在符号(如果有)之后但在数字之前。这用于以“+000000120”形式打印字段。此对齐选项仅对数字类型有效。当'0'紧接在字段宽度之前时,它成为默认值。 |
'^' | 强制字段在可用空间内居中。 |
选项 | 含义 |
---|
'+' | 表示标志可以用于正数和负数。 |
'-' | 表示标志应仅用于负数(这是默认行为)。 |
空格 | 表示应在正数上使用前导空格,在负数上使用减号。 |
类型 | 含义 |
---|
's' | 字符串格式。这是字符串的默认类型,可以省略。 |
None | 同's' 。 |
类型 | 含义 |
---|
'b' | 二进制格式。输出基数2中的数字。 |
'c' | 字符。在打印之前将整数转换为相应的unicode字符。 |
'd' | 十进制整数。输出基数为10的数字。 |
'o' | 八进制格式。输出基数为8的数字。 |
'x' | 十六进制格式 输出基数为16的数字,使用小写字母表示9以上的数字。 |
'X' | 十六进制格式 输出基数16中的数字,使用大写字母表示9以上的数字。 |
'n' | 数。'd' 除了它使用当前语言环境设置插入适当的数字分隔符之外,它是相同的。 |
None | 同'd' 。 |
类型 | 含义 |
---|
'e' | 指数表示法。使用字母“e”以科学记数法打印数字以表示指数。默认精度为6 。 |
'E' | 指数表示法。与'e' 使用大写字母“E”作为分隔符的情况相同。 |
'f' | 定点表示法。将数字显示为定点数。默认精度为6 。 |
'F' | 定点表示法。同'f' ,但转换 nan 到 NAN 和inf 到INF 。 |
'g' | 一般格式。对于给定的精度,将数字舍入为有效数字,然后根据其大小以定点格式或科学计数法格式化结果。p >= 1 p 精确的规则如下:假设使用表示类型'e' 和精度格式化的结果p-1 将具有指数exp 。然后,如果,数字格式化为演示文稿类型和精度。否则,使用表示类型和精度格式化数字在这两种情况下,从有效数字中删除不重要的尾随零,如果后面没有剩余数字,则也会删除小数点。-4 <= exp < p 'f' p-1-exp 'e' p-1 正和负无穷大,正的和负的零,和NaN,被格式化为inf ,-inf ,0 ,-0 和nan 的分别,而不管精度。 精度0 被视为等于精度1 。默认精度为6 。 |
'G' | 一般格式。与'g' 切换到相同, 'E' 如果数字太大。无穷大和NaN的表示也是大写的。 |
'n' | 数字。'g' 除了它使用当前语言环境设置插入适当的数字分隔符之外,它是相同的。 |
'%' | 百分比。将数字乘以100并以固定('f' )格式显示,后跟百分号。 |
None | 类似于'g' ,除了定点表示法,使用时,至少有一位数字超过小数点。默认精度与表示特定值所需的一样高。总体效果是匹配str() 由其他格式修饰符更改的输出。 |
>>>
>>> '{0}, {1}, {2}'.format('a', 'b', 'c')
'a, b, c'
>>> '{}, {}, {}'.format('a', 'b', 'c') # 3.1+ only
'a, b, c'
>>> '{2}, {1}, {0}'.format('a', 'b', 'c')
'c, b, a'
>>> '{2}, {1}, {0}'.format(*'abc') # unpacking argument sequence
'c, b, a'
>>> '{0}{1}{0}'.format('abra', 'cad') # arguments' indices can be repeated
'abracadabra'
按名称访问参数:
>>>
>>> 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W')
'Coordinates: 37.24N, -115.81W'
>>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
>>> 'Coordinates: {latitude}, {longitude}'.format(**coord)
'Coordinates: 37.24N, -115.81W'
访问参数的属性:
>>>
>>> c = 3-5j
>>> ('The complex number {0} is formed from the real part {0.real} '
... 'and the imaginary part {0.imag}.').format(c)
'The complex number (3-5j) is formed from the real part 3.0 and the imaginary part -5.0.'
>>> class Point:
... def __init__(self, x, y):
... self.x, self.y = x, y
... def __str__(self):
... return 'Point({self.x}, {self.y})'.format(self=self)
...
>>> str(Point(4, 2))
'Point(4, 2)'
访问参数的项目:
>>>
>>> coord = (3, 5)
>>> 'X: {0[0]}; Y: {0[1]}'.format(coord)
'X: 3; Y: 5'
更换%s并%r:
>>>
>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
"repr() shows quotes: 'test1'; str() doesn't: test2"
对齐文本并指定宽度:
>>>
>>> '{:<30}'.format('left aligned')
'left aligned '
>>> '{:>30}'.format('right aligned')
' right aligned'
>>> '{:^30}'.format('centered')
' centered '
>>> '{:*^30}'.format('centered') # use '*' as a fill char
'***********centered***********'
更换%+f,%-f以及与指定的标志:% f
>>>
>>> '{:+f}; {:+f}'.format(3.14, -3.14) # show it always
'+3.140000; -3.140000'
>>> '{: f}; {: f}'.format(3.14, -3.14) # show a space for positive numbers
' 3.140000; -3.140000'
>>> '{:-f}; {:-f}'.format(3.14, -3.14) # show only the minus -- same as '{:f}; {:f}'
'3.140000; -3.140000'
替换%x并将%o值转换为不同的基数:
>>>
>>> # format also supports binary numbers
>>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42)
'int: 42; hex: 2a; oct: 52; bin: 101010'
>>> # with 0x, 0o, or 0b as prefix:
>>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42)
'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010'
使用逗号作为千位分隔符:
>>>
>>> '{:,}'.format(1234567890)
'1,234,567,890'
表达百分比:
>>>
>>> points = 19
>>> total = 22
>>> 'Correct answers: {:.2%}'.format(points/total)
'Correct answers: 86.36%'
使用特定于类型的格式:
>>>
>>> import datetime
>>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
'2010-07-04 12:15:58'
嵌套参数和更复杂的示例:
>>>
>>> for align, text in zip('<^>', ['left', 'center', 'right']):
... '{0:{fill}{align}16}'.format(text, fill=align, align=align)
...
'left<<<<<<<<<<<<'
'^^^^^center^^^^^'
'>>>>>>>>>>>right'
>>>
>>> octets = [192, 168, 0, 1]
>>> '{:02X}{:02X}{:02X}{:02X}'.format(*octets)
'C0A80001'
>>> int(_, 16)
3232235521
>>>
>>> width = 5
>>> for num in range(5,12):
... for base in 'dXob':
... print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ')
... print()
...
5 5 5 101
6 6 6 110
7 7 7 111
8 8 10 1000
9 9 11 1001
10 A 12 1010
11 B 13 1011