老宋的地盘

 找回密码
 我要加入
搜索
老宋 首页 文章 技术 查看内容

python3 格式化字符串--format方法

2023-8-11 09:10| 发布者: herosrx| 查看: 107| 评论: 0

摘要: 1.介绍以及基本使用 在Python3中新增加了一个更强的格式化字符串的方法:format。现在,format已经被反向移植到了Python2.7中 位置,{ } 做为占位符 In : 'name is {},age is {}'.format('xiaowang',18) Out: 'nam ...

1.介绍以及基本使用

在Python3中新增加了一个更强的格式化字符串的方法:format。现在,format已经被反向移植到了Python2.7中

  • 位置,{ } 做为占位符
In [1]: 'name is {},age is {}'.format('xiaowang',18)
Out[1]: 'name is xiaowang,age is 18'

In [2]: '{3} and {1}'.format('abc','ef','cde','th')
Out[2]: 'th and ef'

In [2]: '{2}, {1}, {0}'.format(*'abc')
Out[2]: 'c, b, a'

In [4]: "{0[0]},{1[0]}".format([1,2,3],("a","b"))
Out[4]: '1,a'
  • 关键字
In [5]: 'name is {name},age is {age}'.format(age=19,name='xiaowang')
Out[5]: 'name is xiaowang,age is 19'

In [3]: '{name}, {age}'.format(**{"name":"xiaoming","age":20})
Out[3]: 'xiaoming, 20'

2. 标准的格式规范 ( {:}中的格式化语法 )

语法中是以:开头,从左到右依次包含以下字段。

  • 填充字符:可以是任意的 单字符。

  • 对齐选项:

    <表示左对齐。 
    >表示右对齐。 
    ^表示居中对齐。                                                   
    =表示 填充字符,放在数字正负号的后面,数字之前。这个选项只适合数字格式化。
    
  • 符号选项:这个字段只对数字有效。

    +表示数字前面加上正负号。
    -表示负数前面加上符号。这个是默认的。
    空格表示正数前面保留一个空格
    
    In [13]: '{:+f}; {:+f}'.format(3.14, -3.14)
    Out[13]: '+3.140000; -3.140000'
    
    In [15]: '{: f};{: f}'.format(3.14, -3.14)
    Out[15]: ' 3.140000;-3.140000'
    
  • 最小字符宽度:整型数字。如果没有指定,由 传入的数据来决定。
    填充对齐和最小字段宽度通常是一起使用的。

    In [12]: "{:@^10}".format("abc")
    Out[12]: '@@@abc@@@@'
    
  • # 通常用于 格式化输出其他进制的整数。

    b 代表二进制
    d 代表十进制
    o 代表八进制
    x 代表十六进制,字母小写
    X 代表十六进制,字母大写
    
    In [15]: "int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42)
    Out[15]: 'int: 42;  hex: 2a;  oct: 52;  bin: 101010'
    
    In [17]: "int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42)
        ...:     
    Out[17]: 'int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010'
    
    In [78]: "int: {1:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42,55)
        ...:     
    Out[78]: 'int: 55;  hex: 0x2a;  oct: 0o52;  bin: 0b101010'
    
  • 0
    如果没有指定对齐选项,并且0加在了最小宽度前面,相当于“0=宽度”

    In [37]: "{:010}".format(100)
    Out[37]: '0000000100'
    
    In [38]: "{:0=10}".format(-100)
    Out[38]: '0000000100'
    
  • 分组选项:
    ,表示使用逗号作为千位分隔符。 通常用于格式化 整数和浮点数。
    _表示使用一个下划线作为千位分隔符。
    使用下划线的时候注意:如果 格式化后的字符是int或者float,每3个字符插入一个下划线。如果 格式化后的字符类型是b、o、x、X,那么每4个字符插入一个下划线。

    In [17]:  '{:,}'.format(1234567890)
    Out[17]: '1,234,567,890'
    
    In [18]:  '{:_}'.format(1234567890)
    Out[18]: '1_234_567_890'
    
    In [19]:  '{:_b}'.format(100)
    Out[19]: '110_0100'
    
  • 精度
    如果被格式化的数据是 浮点数:代表当你使用f格式化浮点数的时候,保留的小数点位数。 注意不能是 整数。
    如果被格式化的数据是 非数字:代表 最大字段宽度。

    In [27]:  '{:.3f}'.format(3.1415)
    Out[27]: '3.142'
    
    In [29]:  '{:.3s}'.format("python")
    Out[29]: 'pyt'
    
  • 类型
    s 代表字符串,默认的,可以省略。

    b 代表二进制
    d 代表十进制
    o 代表八进制
    x 代表十六进制,字母小写
    X 代表十六进制,字母大写

    f 代表浮点数,默认保留6位小数。

    e 代表使用 科学计数法 来展示数字。
    E 和e相同,只不过使用 大写字母表示。
    科普:科学记数法是一种记数的方法。把一个数表示成a(1≤a<10,n为整数)与10的幂相乘的形式,这种记数法叫做科学记数法。
    当我们要标记或运算某个较大或较小且位数较多时,用科学记数法免去浪费很多空间和时间。
    例如:1000 = 1*10**3 1000的科学计数法就是:1e+03。通常3被称做 指数。

    In [77]:  '{:.2e}'.format(100)
    Out[77]: '1.00e+02'
    
    % 代表以百分比的形式显示数字。默认保留6位小数。
    In [74]:  '{:.3%}'.format(0.1)
    Out[74]: '10.000%' 
    
    g 在e和f之间自动切换,大的数字用 科学计数法表示;小的数字用f格式化。 
    在e和f之间切换的规则:
    In [95]:  '{:.2g}'.format(100.12456)    # 精度 小于等于 指数,g相当于e
    Out[95]: '1e+02'      
    
    
    In [97]:  '{:.4g}'.format(100.12456)   # 精度4,大于 指数2,g相当于f,最终的精度=精度-1-指数=1,也就是说保留1位小数。
    Out[97]: '100.1'
    
  • 有时候会在格式化之前,先对数据进行类型转换。

    In [7]: "{!r}".format("abc")    # 在格式化之前先调用 repr() 函数。
    Out[7]: "'abc'"
    
    In [9]: "{}".format(repr("abc"))
    Out[9]: "'abc'"
    
    #两个例子是等价的
    
    !s 表示 格式化之前先调用 str() 函数。
    !a 表示 格式化之前先调用 ascii() 函数。
    


路过

雷人

握手

鲜花

鸡蛋

相关阅读

最新评论

歌名 - 歌手
0:00

    QQ|手机版|小黑屋|老宋 ( 备案中... )

    GMT+8, 2024-4-30 02:50 , Processed in 0.034949 second(s), 19 queries , Gzip On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    返回顶部