• python 字符串的格式化


    python字符串的格式化分为两种:1)% 方式    2)str.format()  方式。

    str.format() 是比 % 较新的方式, 大多数的 Python 代码仍然使用 % 操作符。但最终会被str.format()代替,推荐使用str.format()

    1、% 方式

    1)用法

    %[(name)][flags][width].[precision]typecode

    2)说明

    (name)     可选,用于选择指定的key
    flags      可选,主要用于数字类型
    width        可选,显示宽度,width大于显示的长度用空格填充,小于则原样输出
    .precision      可选,,显示长度,字符类型:.precision大于显示长度原样输出,小于则显示前precision位字符。数字类型:小数点后保留的位数
    typecode    必选,字符串格式化符号

    flags 的选项有:

    +     右对齐;在正数前面显示加号“+”
    -      左对齐
    <sp>    右对齐;正数前用空格填充
    0     显示的数字前面填充'0'
    #     在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是%x或%X)

    typecode 符串格式化符号: 

    c   格式化字符及其ASCII码
    s   格式化字符串
    d   格式化整数
    u   格式化无符号整型
    o   格式化无符号八进制数
    x   格式化无符号十六进制数
    X   格式化无符号十六进制数(大写)
    f    格式化浮点数字,可指定小数点后的精度(默认保留6位小数)
    e   用科学计数法格式化浮点数
    E   作用同%e,用科学计数法格式化浮点数
    g   %f和%e的简写
    G   %f和%E的简写
    p   十六进制数格式化变量的地址
    %  显示一个 "%"

    3)实例

    >>> "hello %s" % "world"
    'hello world'
    >>> "%s %d" % ("hello world", 2018)
    'hello world 2018'
    >>> "hello %10.2s" % "world"     #"world"的显示宽度 10,只显示两位字符
    'hello         wo'
    >>> "%(name)s, %(age)d" % {"name":"LaoWang", "age":18}     # 通过(name)指定显示的内容
    'LaoWang, 18'
    >>> "%.2f" % 123.456    # 数字类型,保留两位小数(默认四舍五入)
    '123.46'
    >>> "%(num).2f" % {"num":123.456}
    '123.46'

    2、str.format()  方式    (可参考PEP 3101)

    1)、用法

    :[[fill]align][sign][#][0][minimumwidth][.precision][type]

    2)、说明

    fill          [可选] 填充字符,默认为 " "  (空格)
    #           [可选] 对于二进制、八进制、十六进制,如果加上#,会显示0b/0o/0x,否则不显示

    ,            [可选] 为数字添加分隔符,如:1,000,000
    minimumwidth      [可选] 格式化位所占宽度
    .precision        [可选] 小数位保留精度
    type         [可选] 格式化类型,与 % 的一样

    align   [可选] 对齐方式(需配合width使用)

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

    sign  [可选] 有无符号数字

    +    在正数前面显示加号"+"
    -    在正数前面不显示加号"+"
    <ap>  正数前用空格填充

     

    3)实例

    >>> "{} {}".format("hello", 2018)
    'hello 2018'
    >>> "{0} {1}".format("hello", 2018)
    'hello 2018'
    
    >>> l1 = ["hello",2018]
    >>> "{0} {1}".format(*l1)     #通过列表设置参数
    'hello 2018'
    
    >>> "{0[0]} {0[1]} {1[1]} {1[0]}".format(["hello",2018], "abc") #通过索引设置参数
    'hello 2018 b a'
    
    >>> "{age} {name}".format(name="zhangsan",age=18)
    '18 zhangsan'
    >>> d1 = {"name":"zhangsan", "age":18}
    >>> "{name} {age}".format(**d1)   #通过字典设置参数
    'zhangsan 18'
    
    
    >>> "{0:-^15}".format("aa")            #居中显示,用"-"填充
    '------aa-------'
    
    >>> "{name:<10}".format(name="aa", age=18)     #居左显示
    'aa        '
    >>> "{age:>10}".format(name="aa", age=18)     #居右显示
    '        18'
    >>> "{:^10},{:<10.2f}".format("aa", 123.456)     #"aa"居左显示,宽度10;123.456居左显示,宽度10,保留两位小数
    '    aa    ,123.46    '
  • 相关阅读:
    C#中委托和事件的区别
    Linux centos7 计划任务与日志的管理
    linux shell检查字符串是否是IP
    Linux脚本中$#、$0、$1、$@、$*、$$、$?
    Linux命令学习之shift命令
    CentOS7编写systemd服务脚本
    java数据类型转换
    centos7 升级openssh到openssh-8.3p1版本
    oracle的簇的创建
    oracle 分区表的维护
  • 原文地址:https://www.cnblogs.com/yhongji/p/9463733.html
Copyright © 2020-2023  润新知