• python小知识——format函数的使用方法


    参考

    1. 官方文档
    2. python中format用法

    format参数格式

    '{[index][ : [fill] align][sign][#][width][.precision][type]} {……}{……} '.format()
    以上参数的意义是:
    注意,格式中的[ ]内的参数都是可选参数,可以使用也可以不使用

    • index:指定冒号**:**后面出现的参数在format()中的索引值,如果没有,则以format()中的默认顺序自动分配
    • fill:指定空白处的填充符。
    • align:指定数字的对齐方式:

    Format examples

    This section contains examples of the str.format() syntax and comparison with the old %-formatting.

    In most of the cases the syntax is similar to the old %-formatting, with the addition of the {} and with : used instead of %. For example, '%03.2f' can be translated to '{:03.2f}'.

    The new format syntax also supports new and different options, shown in the following examples.

    翻译:

    本节包含str.format()语法示例以及与旧%格式的比较。

    在大多数情况下,语法类似于旧的%- 格式,只是添加了{} 并用: 代替%. 例如,'%03.2f'可以翻译成'{:03.2f}'.

    新格式语法还支持新的不同选项,如以下示例所示。

    1. Accessing arguments by position:按位置访问参数
    >>> '{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'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1. Accessing arguments by name: 按名称访问参数
    >>> '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'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. Accessing arguments’ attributes:访问参数的属性
    >>> 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)'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    1. Accessing arguments’ items:访问参数的项目
    >>> coord = (3, 5)
    >>> 'X: {0[0]};  Y: {0[1]}'.format(coord)
    'X: 3;  Y: 5'
    
    • 1
    • 2
    • 3
    1. Replacing %s and %r:替换%s%r
    >>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
    "repr() shows quotes: 'test1'; str() doesn't: test2"
    
    • 1
    • 2
    1. Aligning the text and specifying a width:对齐文本并指定宽度
    >>> '{:<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***********'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. Replacing %+f, %-f, and % f and specifying a sign:

    替换%+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'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. Replacing %x and %o and converting the value to different bases:

    替换%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'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. Using the comma as a thousands separator:

    使用逗号作为千位分隔符

    >>> '{:,}'.format(1234567890)
    '1,234,567,890'
    
    • 1
    • 2
    1. Expressing a percentage:

    表示百分比

    >>> points = 19
    >>> total = 22
    >>> 'Correct answers: {:.2%}'.format(points/total)
    'Correct answers: 86.36%'
    
    • 1
    • 2
    • 3
    • 4
    1. Using type-specific formatting:

    使用特定于类型的格式

    >>> 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'
    
    • 1
    • 2
    • 3
    • 4
    1. Nesting arguments and more complex examples:

    嵌套参数和更复杂的示例

    >>> 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    1. 通过key来填充
    obj = 'world'
    name = 'python'
    print('hello, {obj} ,i am {name}'.format(obj = obj,name = name))
    
    # 输入结果:hello, world ,i am python
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 通过列表填充
    obj = 'world'
    name = 'python'
    print('hello, {obj} ,i am {name}'.format(obj = obj,name = name))
    
    # 输入结果:hello, world ,i am python
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 通过列表填充
    list=['world','python']
    print('hello {names[0]}  i am {names[1]}'.format(names=list))# 输出结果:hello world  i am python
    print('hello {0[0]}  i am {0[1]}'.format(list)) #输出结果:hello world  i am python
    
    • 1
    • 2
    • 3
    1. 通过字典填充
    dict={‘obj’:’world’,’name’:’python’} 
    print(‘hello {names[obj]} i am {names[name]}’.format(names=dict)) 
    结果hello world i am python 
    
    • 1
    • 2
    • 3
    1. 通过类的属性填充
    class Names():
        obj='world'
        name='python'
    print('hello {names.obj} i am {names.name}'.format(names=Names))
    #输入结果hello world i am python
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 使用魔法参数
    args = [‘,’,’inx’] 
    kwargs = {‘obj’: ‘world’, ‘name’: ‘python’} 
    print(‘hello {obj} {} i am {name}’.format(*args, **kwargs))#输入结果:hello world , i am python
    
    • 1
    • 2
    • 3

    注意:魔法参数跟你函数中使用的性质是一样的:这里format(*args, **kwargs)) 等价于:format(‘,’,’inx’,obj = ‘world’,name = ‘python’)

    %r或者{!r}在python中的意思

    都是python的转译字符, 类似于%r, %d,%f
    简单的例子

    >>> a = '123'
    >>> b = 'hello, {!r}'.format(a)
    >>> b
    "hello, '123'"
    
    • 1
    • 2
    • 3
    • 4

    例子用的是format,跟直接%效果类似,注意结果中包含的是字符串原意。

    例子二

    >>> a = '123'
    >>> b = 'hello, %r' % a
    >>> b
    "hello, '123'"
    
    • 1
    • 2
    • 3
    • 4

    这对一部分的对象还是很有用的。r直接反应对象本体。

    比如说,

    >>> b = 'hello, %r' % 123
    >>> b
    'hello, 123'
    
    • 1
    • 2
    • 3

    123的本体就是123。

    还看下面的这个例子

    >>> b = 'hello, !r' % '123'
    Traceback (most recent call last):
      File "", line 1, in 
    TypeError: not all arguments converted during string formatting
    >>>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    符号,这个只在fromat中有用,要注意方法。但是效果类似

    >>> b = 'hello, %r' % '123'
    >>> b
     "hello, '123'"
    >>> b = 'hello, {!r}'.format( '123')
    >>> b
     "hello, '123'"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    Linux:RAID磁盘阵列
    XP系统快捷方式故障
    win10+VS2015编译opencv4.5.1+opencv_contrib+CUDA详细教程
    汇聚荣拼多多电商好不好?
    基于DJYOS的IIC驱动编写指导手册
    PE结构学习(5)_导入表与导出表
    MySQL安装及初始密码设置
    CPU密集型和IO密集型任务的权衡:如何找到最佳平衡点
    数据库表字段以表格形式写入Word
    含文档+PPT+源码等]精品基于Uniapp+SSM实现的记账app[包运行成功]Android毕业设计Java项目源码论文
  • 原文地址:https://blog.csdn.net/acktomas/article/details/125894951