string.format()方法与实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Miss_Audrey/article/details/83417804
选项 含义
'<' 强制字段在可用空间内左对齐(这是大多数对象的默认值)。
'>' 强制字段在可用空间内右对齐(这是数字的默认值)。
'=' 强制将填充放置在符号(如果有)之后但在数字之前。这用于以“+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',但转换 nanNANinfINF
'g'

一般格式。对于给定的精度,将数字舍入为有效数字,然后根据其大小以定点格式或科学计数法格式化结果。p >= 1p

精确的规则如下:假设使用表示类型'e'和精度格式化的结果p-1将具有指数exp然后,如果,数字格式化为演示文稿类型和精度。否则,使用表示类型和精度格式化数字在这两种情况下,从有效数字中删除不重要的尾随零,如果后面没有剩余数字,则也会删除小数点。-4 <= exp < p'f'p-1-exp'e'p-1

正和负无穷大,正的和负的零,和NaN,被格式化为inf-inf0-0nan的分别,而不管精度。

精度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

猜你喜欢

转载自blog.csdn.net/Miss_Audrey/article/details/83417804