• Python里的f-string中的补齐


    今天看个代码,给我整不会了。

    试了半天,终于大概知道是啥意思了。浅记录一下。这是个挺基础的知识点,主要是记录思考过程

    原始问题是:

    如何打印一个包含时间递增的列表:如:

    ['00:00', '00:01', '00:02', '00:03', '00:04', '00:05'.................'23:55', '23:56', '23:57', '23:58', '23:59']
    
    • 1

    有人给出了答案:

    re_list = []
    # 分钟间隔
    time_step = 1
    for i in range(0, 24, 1):
        for j in range(0, 60, time_step):
            time_str = f'{i:0>2}:{j:0>2}' # 0>2是啥意思?
            re_list.append(time_str)
            print(time_str)
    print(re_list)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    其中这句话没看懂

    在这里插入图片描述
    f-string 这个玩意儿我倒是知道,也经常用。但是这个0>2就不明白了,也不像是三元表达式啊?

    先去百度搜一搜看看。好像没找到(关键是不知道该搜什么好,关键词搜不对就挺难找到正确答案的)

    那就自己试试吧。

    a =1 # 先定义一个变量
    print(f'{a:0>2}:{a:0>2}') # 再按上边的格式打印一下看看效果
    
    • 1
    • 2

    在这里插入图片描述

    打出来的效果是01:01


    猜想步骤:

    1、先看看哪几个能改,改一下运行看看结果再说。

    f’{a:0>2}:{a:0>2}'中
    a、0、>、2这四个都能改,随便改改试试:

    把0换成x,可以打印。如下:
    把0换成x,也可以打印

    把0换成6,也可以打印,如下
    把0换成6也可以打印
    那么,盲猜一下,好像跟补齐相关。
    如果是补齐,那么参与补齐的字符应该是哪个?大概率是0,因为01:01、x1:x1、61:61中,并没有出现源代码里边的2的字样。

    以上,说明这东西大概是补齐对齐的意思,并且源码里的0,应该是用于补齐的字符。


    2、如果用于补齐的字符是0,那2是什么意思?—继续试验。把2改成3看看效果

    如下:
    打印输出内容,居然变成了001,那这个2大概率就是位数。也就是控制补全到多少位的那个东西。
    在这里插入图片描述

    为了证明猜想,再试一组:把2换成字符串。
    如下,报错了。
    因为对于补全,我们一般都会说:最少10位,不足的用0补全。
    而不会说:最少a位,不足的用0补全。
    在这里插入图片描述
    以上,说明猜想基本2正确,2应该就是那个用于控制补全到多少位的那个东西。


    3、那这个大于号(>)是什么意思?—继续试验。

    大于号的作用就呼之欲出了,大概率是控制左补全还是右补全的

    如下:
    把大括号改成小于号,打印输出就变成了10000
    在这里插入图片描述

    贴个对比图:
    在这里插入图片描述

    以上,说明猜想基本3正确,>应该就是控制补全方向的。


    综上推断,语法应该是:

    f"{object:str:int}" # 官方文档太多了,没找到。等找到了再补上官网的语法
    
    • 1

    object:要被补全的内容。可以是数字、字符串(其他的列表、元组、集合、字典都不行)
    str:用什么来补全。可以是数字、字符串(其他的列表、元组、集合、字典都不行)
    int:补全多少位(注意,这个是加上原始内容之后补全的位数,是object+str合起来的位数)。只能是整数,不能是小数(这里有点好玩,我试了下负数,居然结果一样)

    在这里插入图片描述

    多说一句:居然还有^这个符号,代表居中。
    在这里插入图片描述

    在这里插入图片描述

    参考资料:
    Python格式化字符串f-string概览

  • 相关阅读:
    云原生之Kubernetes:20、Flannel网络插件详解
    常用的openssl命令
    【网络基础】——HTTPS
    6 个最佳 Windows 免费磁盘分区管理器
    redis哨兵模式详解
    行人重识别项目 | 基于Pytorch实现ReID行人重识别算法
    rabbit使用动态队列
    使用dos命令符操作,感光屏绘图,ccd摄像头采集图像,并按程序进行机械加工的计算机
    Python——绘制圆形
    中文写代码?开始不信后来用中文写了剧情小游戏!嗯,真香~
  • 原文地址:https://blog.csdn.net/xkukeer/article/details/126057538