• Python字符串操作:str.format


    简介

    format是python中极其重要的函数,用来做字符串格式化,核心原理是在字符串中使用花括号{}来代表待替换的部分,类似占位符,然后把待替换的数据填充进对应的花括号中,以此完成对字符串的格式化。

    format中允许多种不同的花括号形式,来支持对应数据的填充,接下来会简单介绍。

    填充方式

    按位置填充

    直接举例讲解吧:

    print('而{},{}的朋友,{}才是真正的英雄'.format('你', '我', '你'))
    # 而你,我的朋友,你才是真正的英雄
    
    • 1
    • 2

    花括号的数量跟后面参数的数量必须是一样的,后面的参数将会按照位置一一对应填充到前面的花括号里。

    花括号数量 多于 参数数量,报错;

    花括号数量 少于 参数数量,可以正常跑;

    按数字填充

    按数字填充的好处是,可以重复使用后面的参数。

    print('而{1},{0}的朋友,{1}才是真正的英雄'.format('我', '你'))
    # 而你,我的朋友,你才是真正的英雄
    
    • 1
    • 2

    注意:

    • 数字必须是大于0的整数

    这里的0表示后面的第一个位置参数,1表示第二个位置参数,以此类推。

    按关键字填充

    按数字填充的话,后面需要配合的是位置参数。按关键字填充的话,后面配合的是关键字参数。

    print('而{you},{my}的朋友,{you}才是真正的英雄'.format(my='我', you='你'))
    # 而你,我的朋友,你才是真正的英雄
    
    • 1
    • 2

    这种方式更加直观。不止可以重复使用后面的参数,后面参数是关键字参数的话,也就不用考虑参数的顺序之类的问题了。

    混合填充

    这个没啥好说的

    print('而{you},{0}的朋友,{you}才是真正的英雄'.format('我', you='你'))
    # 而你,我的朋友,你才是真正的英雄
    
    • 1
    • 2

    使用时需要注意,关键字参数和位置参数的前后顺序关系。

    字典/列表填充

    直接举例:

    name = ['我', '你']
    name_dict = {'my': '我', 'you': '你'}
    
    print('而{1},{0}的朋友,{1}才是真正的英雄'.format(*name))
    print('而{you},{my}的朋友,{you}才是真正的英雄'.format(**name_dict))
    print('而{you},{0}的朋友,{you}才是真正的英雄'.format(*name, **name_dict))
    #而你,我的朋友,你才是真正的英雄
    #而你,我的朋友,你才是真正的英雄
    #而你,我的朋友,你才是真正的英雄
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    其中,列表有个特殊用法,即结合方括号使用,举例:

    name = ['我', '你']
    print('而{0[1]},{0[0]}的朋友,{0[1]}才是真正的英雄'.format(name))
    #而你,我的朋友,你才是真正的英雄
    
    • 1
    • 2
    • 3

    挺花里胡哨的,感觉不如.format(*name)直观。

    类变量填充

    将需要替换的变量定义成类变量,在format里通过实例直接把对应的实例变量赋值给对应的花括号,注意,花括号里和类里的变量名必须是一样的。

    class Name():
        def __init__(self, my, you):
            self.my = my
            self.you = you
    
    name = Name('我', '你')
    
    print('而{0.you},{0.my}的朋友,{0.you}才是真正的英雄'.format(name))
    print('而{p.you},{p.my}的朋友,{p.you}才是真正的英雄'.format(p=name))
    print('而{.you}'.format(name))
    #而你,我的朋友,你才是真正的英雄
    #而你,我的朋友,你才是真正的英雄
    #而你
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    当只有一个字段的时候,就可以省略数字。

    格式调整

    字符串对齐

    使用语法:

    • '{:待填充字符^宽度}.format()':宽度为5,居中对齐;
    • '{:待填充字符<宽度}.format()':宽度为5,左对齐;
    • '{:待填充字符>宽度}.format()':宽度为5,右对齐;

    需要注意:

    • 待填充字符只能是一个字符;
    • 如果不指定待填充字符,如:<5,则默认使用空格填充。

    举例:

    print('{:0^5}'.format(1))
    print('{:0<5}'.format(1))
    print('{:0>5}'.format(1))
    print('{:^5}'.format(1))
    #00100
    #10000
    #00001
    #  1  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    数字格式化

    这些功能比较多,比如说还可以进行各种进制之间的转换,就不全面介绍了,只介绍一些十进制里比较常用的用法。

    保留指定小数位数(自动四舍五入,也能实现科学计数法的转换):

    print('{:.2f}'.format(12.3456)) # 12.35
    print('{:.0f}'.format(12.56)) # 13
    print('{:.2f}'.format(1.23e+5)) # 123000.00
    
    • 1
    • 2
    • 3

    千分位展示

    print('{:,}'.format(1000000)) # 1,000,000
    
    • 1

    百分比转换(自动转换百分比形式,并自动保留指定位小数):

    print('{:.1%}'.format(0.31415)) # 31.4%
    
    • 1

    科学计数法转换

    print('{:.1e}'.format(100000000)) # 1.0e+08
    
    • 1

    不同进制之间的转换(如二进制b、八进制o、十六进制x、带0x开头的十六进制是#x等):

    print('{:b}'.format(12))    # 1100
    
    • 1

    参考文献:

    1. Python的format用法详解
    2. Python 进制转换,一步到位
    3. python官方文档 - 输入与输出
  • 相关阅读:
    学习Source Generators之IncrementalValueProvider
    RK3588移植-ffmpeg交叉编译
    【共享单车数据专题】共享单车数据有哪些应用?
    3D 三角形的顶点顺序
    初学axios-AJAX
    操作系统(Android&IOS)图像绘图的基本原理
    【手把手带你学JavaSE】第四篇:Java中的方法
    Linux 学习笔记(1)——系统基本配置与开关机命令
    Ubuntu 22.04 安装配置 flatpak
    uniapp实战项目 (仿知识星球App) - - 配置开发工具和全局css样式
  • 原文地址:https://blog.csdn.net/wlh2220133699/article/details/133269598