zoukankan      html  css  js  c++  java
  • 格式化字符串

    定义

    “%”对各种类型的数据进行格式化输出

    msg = "my name is %s ,my hobby is %s" % ("huahua","read")
    print(msg)
    
    #该格式化字符串中包含2个“%s”占位符,它会被括号内的值代替;第二部分固定使用“%”作为分隔符,%后第二部分,如果一个值,则不需要括号

     Python提供了如表1地转换说明:

    表 1 Python转换说明符
    转换说明符说明
    %d,%i 转换为带符号的十进制形式的整数
    %o 转换为带符号的八进制形式的整数
    %x,%X 转换为带符号的十六进制形式的整数
    %e 转化为科学计数法表示的浮点数(e 小写)
    %E 转化为科学计数法表示的浮点数(E 大写)
    %f,%F 转化为十进制形式的浮点数
    %g 智能选择使用 %f 或 %e 格式
    %G 智能选择使用 %F 或 %E 格式
    %c 格式化字符及其 ASCII 码
    %r 使用 repr() 将变量或表达式转换为字符串
    %s 使用 str() 将变量或表达式转换为字符串

    举例说明:

    1.打印数字%d可以在代码中看出,接收整数

    msg='i am %s my hobby is %d' % ('zjh',18)

    2.打印浮点数,保留两位小数点

    tpl = "percent %.2f" % 99.976234444444444444
    print(tpl)
    结果:99.78

    3.打印%比,需要在%前再加个%,定义输出%

    tpl = 'percent %.2f %%' % 99.976234444444444444
    print(tpl)

    4.指定最小宽度

    num = -28
    print("num is: %6i" % num)
    print("num is: %6d" % num)
    print("num is: %6o" % num)
    print("num is: %6x" % num)
    print("num is: %6X" % num)
    print("num is: %6s" % num)
    #结果
    num is:    -28
    num is:    -28
    num is:    -34
    num is:    -1c
    num is:    -1C
    num is:    -28

    从上面的输出结果可以看出,此时指定了字符串的最小宽度为 6,因此程序转换数值时总宽度为 6,程序自动在数值前面补充了三个空格。

    在默认情况下,转换出来的字符串总是右对齐的,不够宽度时左边补充空格。Python 也允许在最小宽度之前添加一个标志来改变这种行为,Python 支持如下标志:

      • -:指定左对齐。
      • +:表示数值总要带着符号(正数带“+”,负数带“-”)。
      • 0:表示不补充空格,而是补充 0。
      • 提示:这三个标志可以同时存在。
    num2 = 30
    # 最小宽度为6,左边补0
    print("num2 is: %06d" % num2)
    # 最小宽度为6,左边补0,总带上符号
    print("num2 is: %+06d" % num2)
    # 最小宽度为6,右对齐
    print("num2 is: %-6d" % num2)
    #结果输出
    num2 is: 000030
    num2 is: +00030
    num2 is: 30    

    对于转换浮点数,Python 还允许指定小数点后的数字位数:如果转换的是字符串,Python 允许指定转换后的字符串的最大字符数。这个标志被称为精度值,该精度值被放在最小宽度之后,中间用点 ( . ) 隔开。例如如下代码:

    my_value = 3.001415926535
    # 最小宽度为8,小数点后保留3位
    print("my_value is: %8.3f" % my_value)
    # 最小宽度为8,小数点后保留3位,左边补0
    print("my_value is: %08.3f" % my_value)
    # 最小宽度为8,小数点后保留3位,左边补0,始终带符号
    print("my_value is: %+08.3f" % my_value)
    the_name = "Charlie"
    # 只保留3个字符
    print("the name is: %.3s" % the_name) # 输出Cha
    # 只保留2个字符,最小宽度10
    print("the name is: %10.2s" % the_name)
    #输出结果
    my_value is:    3.001
    my_value is: 0003.001
    my_value is: +003.001
    the name is: Cha
    the name is:         Ch

    fomat格式化字符串:

    #不写对应关系,传值个数不一一对应会报错
    # tpl = "i am {},age {}, {}".format("zjh",18,"read")
    # print(tpl)
    
    # 按照元组索引取值
    tpl1 = "i am {1},age {0}, {2}".format("zjh",18,"read")
    print(tpl1)
    
    # 按照元组下标取值,并且只取元组中的一个值,可以成功获取
    tpl2 = "i am {1},age {1}, {1}".format("zjh",18,"read")
    print(tpl2)
    
    # 按照Key值方式取值,根据Key值一一寻找
    tpl3 = "i am {name},age {age}, {name}".format(name="zjh",age=19)
    print(tpl3)
    
    # 按照字典对应关系寻找,传输的值是一个字典,需要在字典前加**
    tpl4 = "i am {name},age {age}, {name}".format(**{"name":"zjh","age":"19"})
    print(tpl4)
    
    #列表形式,需要加*号识别列表,并遍历每一个元素
    tpl5 = 'i am {:s}, age {:d} '.format(*['zjh',15])
    print(tpl5)
    
    #输出不同进制数
    # {:b}二进制
    # {:o}八进制
    # {:d}十进制
    # {:x}十六进制
    # {:X}以大写ABC显示十六进制
    # {:%}以%输出
    tpl6 = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%},{}".format(15, 15, 15, 15, 15, 15.87623, 2)
    print(tpl6)
     
  • 相关阅读:
    理解Linux 的CPU Load和CPU利用率
    Linux进程和信号超详细分析
    Linux 磁盘配额
    linux磁盘阵列raid详解
    Linux LVM管理
    Linux fstab文件详解
    Linux 磁盘管理
    sourceTree的使用
    Logstash 参考指南(Kafka输入插件)
    ELK的一次吞吐量优化
  • 原文地址:https://www.cnblogs.com/z-j-h/p/12073810.html
Copyright © 2011-2022 走看看