Python string.format() 的用法

来源:互联网 发布:java ant pdf 编辑:程序博客网 时间:2024/06/06 02:16

函数说明

string.format(),格式化字符串。

语法

     格式化字符串包含由大括号{}围住的“替代域”,在大括号外的文本内容直接复制到输出的字符串里。string.format()的语法类似于%,不同之处在于在此使用{}和:两个符号替代。例如, '%03.2f' 对应为'{:03.2f}'。string.format()的语法为

format_spec ::=  [[fill]align][sign][#][0][width][,][.precision][type]fill        ::=  <any character>align       ::=  "<" | ">" | "=" | "^"sign        ::=  "+" | "-" | " "width       ::=  integerprecision   ::=  integertype        ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

实例

通过位置访问参数(arguments

>>> '{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)'


访问参数的项(item)

>>> coord = (3, 5)>>> 'X: {0[0]};  Y: {0[1]}'.format(coord)'X: 3;  Y: 5'


对齐文本并指定特定的宽度

>>> '{:<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%'


更复杂的例子

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

参考

https://docs.python.org/3/library/string.html

http://youngsterxyf.github.io/2013/01/26/python-string-format/

原创粉丝点击