• Python格式化输出


      说到格式化输出就要先说说print函数

      python的格式化输出就是对python的字符串进行一系列的操作,从而使字符串在屏幕中显示一定的格式。常见的格式化有字符串拼接、对齐。

    % 形式

      使用 % 进行字符格式化时要提前定义好一个模板

      模板其实就是一个带有 % 号和一个有特殊意义的字母的字符串,定义好模板后才能对进行字符串格式化用 % 号进行格式化

      如:  

      

    content = "hello %s"     # 模板
    
    print(content % "Alex")    # 进行格式化
    
    #  ############ 结果 ##############
    #   hello Alex
    % 后面的特殊的字母
    • %s           字符串 (采用__str__的显示)

    • %r            字符串 (采用__repr__的显示)

    • %c            单个字符

    • %b           二进制整数

    • %d        十进制整数

    • %i            十进制整数

    • %o            八进制整数

    • %x           十六进制整数

    • %e           指数 (基底写为e)

    • %E          指数 (基底写为E)

    • %%               字符"%"
    • %[.2]F或f      浮点数          # .2为输出的小数点 ([ ]为可选),默认6位
    • %g          指数(e)或浮点数 (根据显示长度)
    • %G          指数(E)或浮点数 (根据显示长度)

      

      可以用如下的方式,对格式进行进一步的控制:

      %[(name)][flags][width].[precision]特殊字母

      (name)为命名

      flags可以有+,-,' '或0。+表示右对齐。-表示左对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充。

      width表示显示宽度

      precision表示小数点后精度

    如:

    print("%+10x" % 10)  # 右对齐, 宽度为10
    print("%04d" % 5)   # 宽度为4, 为充满部分用0填充
    print("%6.3f" % 2.3) 

    format 方法

      format方法和  Formatter类共享相同的格式字符串语法(虽然对于 Formatter来说,其子类可以定义它们自己的格式字符串语法)。 格式字符串包含有以花括号 {} 括起来的“替换字段”。 不在花括号之内的内容被视为字面文本,会不加修改地复制到输出中。 如果你需要在字面文本中包含花括号字符,可以通过重复来转义: {{}}

      使用format方法也和%方法一样都需要一个模板,其格式如下:

        "{index/key:[填充][对齐][宽度][数字分隔][精度][类型]}"

      index/key

      index为format参数的位置,如:  

    print("{1} {0} {2}".format("b","a","c"))
    
    # a b c

      假如传入参数为键值对时,key 为 键值对的键,如:

    print("{a} {b} {c}".format(b="bb",a="aa",c="cc"))
    
    #aa bb cc
    # 等同于:
    print("{a} {b} {c}".format(**{"b": "bb", "a": "aa", "c": "cc"}))

      当index或key填写时,format会根据占位符{}里面的值,去format的参数中取出对应的值,并放入到占位符中。而不会和%方法一样必须根据位置传参数。

      

      除了可以指定format的参数次序外,使用format方法可以指定字符串输出的格式。

      在format中在占位符写上冒号“:”表示要使用format的控制字符串输出的格式。

       填充

      当设置了宽度并且宽度大于传入数据长度时,我们可以指定一个字符作为空白部分的填充字符。如:

    print("{:-<20}".format("hello"))
    
    #hello---------------
     "{:-<20}" 表示宽度设置20,左对齐,空白部分以“-”填充。

      注意:使用填充时要保证有对齐方式

      对齐

      format的对齐方式特别简单,如下

        <  :  左对齐

        >  : 右对齐

        ^ :  居中

      

      宽度

      为一个数字,当设置的宽度小于数据的长度时,设置宽度将不起作用。

      数字分隔符

      即千位分隔符'',',当数字为一个数字时,可以加入逗号表示使用千位分隔符,使用后 10000 ====>  10,000

    print("{:,}".format(10000000))
    
    #10,000,000

      注意:format的参数必须为一个数字,否者会报错。

      精度

      和上一个一样,精度也是对于数字类型的数据来说的,使用"." + "精度数字" + "f" (浮点数数据类型) ,指定精度(小数点位数)

     

    print("{:.2f}".format(10))

    #10.00
    print("{:.6f}".format(3.14159265))

    #3.141593

    print("{:.0f}".format(3.14159265))
    #3

      类型

    # +++++++++++ 进制 +++++++++++++
    
    # ########### 二进制 ############
    print('{:b}'.format(15))
    #1111
    
    # ########### 八进制 ############
    print('{:o}'.format(15))
    #17
    
    # ########### 十进制 ############
    print('{:d}'.format(15))
    #15
    
    # ########### 十六进制 ############
    print('{:x}'.format(15))
    #f
    
    print('{:#x}'.format(15))
    #0xf
    
    print('{:#X}'.format(15))
    #0XF
    
    # ++++++++++++ 格式 +++++++++++++++
    
    # ########### 百分比格式############
    
    print("{:.2%}".format(0.45))
    #45.00%
    
    # ########### 指数记法格式 ############
    
    print("{:.2e}".format(10000000000000000000))
    #1.00e+19

      注: 更多的format格式规格迷你语言,请看 官方文档

    f-strings方法

    这是Python的一种新的格式化方法,利用{}代替%

    name = "李刚"
    
    print(f"我爸是{name}!")

    这种方法相对于一般的%方法来说,实用性更好。

     注意:f-string方法对于python的早期版本并不支持

  • 相关阅读:
    bzoj2669 [cqoi2012]局部极小值 状压DP+容斥
    bzoj2560 串珠子 状压DP
    bzoj2004 [Hnoi2010]Bus 公交线路 矩阵快速幂+状压DP
    「校内训练 2019-04-23」越野赛车问题 动态dp+树的直径
    bzoj5210 最大连通子块和 动态 DP + 堆
    动态 DP 学习笔记
    bzoj4987 Tree 树上背包
    bzoj1190 [HNOI2007]梦幻岛宝珠 背包
    bzoj1004 [HNOI2008]Cards Burnside 引理+背包
    bzoj4922 [Lydsy1706月赛]Karp-de-Chant Number 贪心+背包
  • 原文地址:https://www.cnblogs.com/lczmx/p/12213547.html
Copyright © 2020-2023  润新知