• Python字符串格式化 format


    format方式

    数字格式的定义以 ':' 号开始。碰到了': '字符就知道要定义一个数字的显示格式了。格式的定义顺序为 

    [[fill]align][sign][#][0][width][,][.precision][type]

      • fill           【可选】空白处填充的字符
      • align        【可选】对齐方式(需配合width使用)
        • <,内容左对齐
        • >,内容右对齐(默认)
        • =,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
        • ^,内容居中
      • sign         【可选】有无符号数字
        • +,正号加正,负号加负;
        •  -,正号不变,负号加负;
        • 空格 ,正号空格,负号加负;
      • #            【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
      • ,            【可选】为数字添加分隔符,如:1,000,000
      • width       【可选】格式化位所占宽度
      • .precision 【可选】小数位保留精度
      • type         【可选】格式化类型
        • 传入” 字符串类型 “的参数
          • s,格式化字符串类型数据
          • 空白,未指定类型,则默认是None,同s
        • 传入“ 整数类型 ”的参数
          • b,将10进制整数自动转换成2进制表示然后格式化
          • c,将10进制整数自动转换为其对应的unicode字符
          • d,十进制整数
          • o,将10进制整数自动转换成8进制表示然后格式化;
          • x,将10进制整数自动转换成16进制表示然后格式化(小写x)
          • X,将10进制整数自动转换成16进制表示然后格式化(大写X)
        • 传入“ 浮点型或小数类型 ”的参数
          • e, 转换为科学计数法(小写e)表示,然后格式化;
          • E, 转换为科学计数法(大写E)表示,然后格式化;
          • f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
          • F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
          • g, 自动在e和f中切换
          • G, 自动在E和F中切换
          • %,显示百分比(默认显示小数点后6位)

    fill           【可选】空白处填充的字符

    align        【可选】对齐方式(需配合width使用)

      • <,内容左对齐
      • >,内容右对齐(默认)
      • =,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
      • ^,内容居中

    width       【可选】格式化位所占宽度

    复制代码
    复制代码
    s1 ='---{:*^20s}----'.format('welcome')
    print(s1)
    s2 ='---{:*>20s}----'.format('welcome')
    print(s2)
    s3 ='---{:*<20s}----'.format('welcome')
    print(s3)
    复制代码
    复制代码

    执行结果:

    ---******welcome*******----
    ---*************welcome----
    ---welcome*************----

    #            【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示

    • b,将10进制整数自动转换成2进制表示然后格式化
    • c,将10进制整数自动转换为其对应的unicode字符
    • d,十进制整数
    • o,将10进制整数自动转换成8进制表示然后格式化;
    • x,将10进制整数自动转换成16进制表示然后格式化(小写x)
    • X,将10进制整数自动转换成16进制表示然后格式化(大写X)

    三种方法表示

    复制代码
    复制代码
    a1 = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%},{:c}".format(15, 15, 15, 15, 15, 15.87623,65)
    a2 = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%},{1:c}".format(15,65)
    a3 = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%},{cc:c}".format(num=15,cc=65)
    print(a1)
    print(a2)
    print(a3)
    复制代码
    复制代码

    执行结果:

    numbers: 1111,17,15,f,F, 1587.623000%,A
    numbers: 1111,17,15,f,F, 1500.000000%,A
    numbers: 1111,17,15,f,F, 1500.000000%,A

    ,            【可选】为数字添加分隔符,如:1,000,000

    .precision 【可选】小数位保留精度

    n = '---{:,d}----'.format(10000000)
    n1 = '---{:.2f}----'.format(1.2345)
    print(n)
    print(n1)

    执行结果:

    ---10,000,000----
    ---1.23----

     format常用格式化

    复制代码
    复制代码
    tp1 = "i am {}, age {}, {}".format("seven", 18, 'alex')
    tp2 = "i am {}, age {}, {}".format(*["seven", 18, 'alex'])
    tp3 = "i am {0}, age {1}, really {0}".format("seven", 18)
    tp4 = "i am {0}, age {1}, really {0}".format(*["seven", 18])
    tp5 = "i am {name}, age {age}, really {name}".format(name="seven", age=18)
    tp6 = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})
    tp7 = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])
    tp8 = "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1)
    tp9 = "i am {:s}, age {:d}".format(*["seven", 18])
    tp10 = "i am {name:s}, age {age:d}".format(name="seven", age=18)
    tp11 = "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": 18})
    print(tp1)
    print(tp2)
    print(tp3)
    print(tp4)
    print(tp5)
    print(tp6)
    print(tp7)
    print(tp8)
    print(tp9)
    print(tp10)
    print(tp11)
    复制代码
    复制代码

    执行结果:

    复制代码
    复制代码
    i am seven, age 18, alex
    i am seven, age 18, alex
    i am seven, age 18, really seven
    i am seven, age 18, really seven
    i am seven, age 18, really seven
    i am seven, age 18, really seven
    i am 1, age 2, really 3
    i am seven, age 18, money 88888.100000
    i am seven, age 18
    i am seven, age 18
    i am seven, age 18
  • 相关阅读:
    Perl-统计某电路面积、功耗占比(NVDIA2019笔试)
    Tensorflow 之 loss
    Verilog-同步FIFO
    Verilog-case、casez和casex的区别
    modelsim使用命令
    进制转换工具
    串口写入和读取数据
    串口发送数据——字符串发送与十六进制发送的区别
    字符转换为十六进制 字符串转化为字符数组
    VS2008编了个MFC对话框,编译链接都没有问题,但是运行出来的对话框完全不能点击
  • 原文地址:https://www.cnblogs.com/xuwenwei/p/14402832.html
Copyright © 2020-2023  润新知