注册 登录

清河洛

Python中的f-string使用简介

qingheluo2022-08-23清河洛957
继%语句、format函数两种方法进行字符串格式化后,Python 3.6开始引入了一种效率更高的字符串格式化方式:f-stringf-string在形式上是带有"f"修饰符的字符串(f""),字符串中的大括号"{}"表明将要被替换的字段f-string在本质上是一个在运行时运算求值的表达式,可以在大括号"{}"中进行简单的计算f-string在功能方面不逊于%语句和format函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化...

继%语句、format函数两种方法进行字符串格式化后,Python 3.6开始引入了一种效率更高的字符串格式化方式:f-string

f-string在形式上是带有"f"修饰符的字符串(f""),字符串中的大括号"{}"表明将要被替换的字段

f-string在本质上是一个在运行时运算求值的表达式,可以在大括号"{}"中进行简单的计算

f-string在功能方面不逊于%语句和format函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化

以下使用方法中使用的变量

mystring = "day day up"
myint = 5201314
myfloat = 520.1314

直接输出或计算后输出

print(f"{mystring}")
# day day up

print(f"{mystring = }")

等号"="是一个比较特殊的标记,表示等号前是对变量简单的计算
等号之前的部分会原封打印,在等号后添加上计算的结果
# mystring = 'day day up'

print(f"{mystring.capitalize() = }")

# mystring.upper() = 'DAY DAY UP'

print(f"{myint % 5}")

# 104.0

print((f"{myint % 5 = }"))

# myint / 5 = 104.0</pre>转义问题:在大括号中不能使用转移符号,会报错:print(f&quot;{&#39;&#39;&#39;}&quot;)

在大括号最后加上冒号":"表示要按照指定的格式输出

字符串对齐和长度:":[char][<^>]len"char是一个表示用来填充的一位字符(必须也只能是一位),省略默认使用空格
    三个符号分别表示左对齐,中对齐和右对齐
    len为一个整数,表示填充后的最小长度,当len小于字符串长度时输出原字符串
    print(f"{mystring:^-15}") # --day day up---
    print(f"{mystring.upper() = :-^15}") # mystring.upper() = --DAY DAY UP---
数字正负、长度和精度:":[+- ][char][len][_,][.decimal]"
    加(+)减(-)和空格( )用来表示数字的符号
        当使用加号(+)时,负数前加符号(-),正数前加正号(+)
        当使用减号(-)(默认)时,负数前加符号(-),正数前不加任何符号
        当使用空格( )时,负数前加符号(-),正数前加空格( )
    char是一个表示用来填充的一位字符(必须也只能是一位),省略默认使用空格
    len为一个整数,表示数字输出的最小长度,包含整数位+小数位+小数点,当len小于数字长度时输出原数字
    下划线(_)和逗号(,)表示是否以下划线或逗号分隔千位的数字格式(5,201,314)
    decimal为一个整数,表示小数位的最长位数
    会优先满足len,之后再满足decimal
格式转换:用在大括号的最右边,表示对前面的显示内容进行数据类型转换
    s:字符串
    b:二进制整数
    c:将数字转换位对应的unicode编码的字符
    d:十进制整数
    o:八进制整数
    x:十六进制整数(小写)
    X:十六进制整数(大写)
    e:科学计数格式(5.201314e+02)
    E:科学计数格式(5.201314E+02)
    f:浮点数,默认最大精度为6
    F:同f,会将nan和inf转换为NAN和INF
    g:通用格式,小点的数用f,大点的数用e
    G:通用格式,小点的数用F,大点的数用E
    %:百分比格式,数字乘以100后按f格式排版后加上"%"后缀
    在整数的格式转换符号之前加上井号(#)会为不同的进制添加上不同的前缀
    #b:二进制添加"0b"前缀
    #o:八进制添加"0o"前缀
    #b:十六进制添加"0x"或"0X"前缀
!s 和 !r语句
    print(f'{mystring!s}')
        # day day up,相当于str(mystring)
    print(f'{mystring!r}')
        # 'day day up',相当于repr(mystring)
datetime模块时间格式化
print(f"{datetime.datetime.now():%Y-%m-%d %H:%M:%S}")

    %w  星期,int,0是周日,6是周六
    %u  星期,int,1是周一,7是周日
    %d  日,int,以0补足两位
    %m  月,int,以0补足两位
    %y  年后两位数字,以0补足两位
    %Y  年完整数字,不补零
    %H  小时,24小时制,以0补足两位
    %I  小时,12小时制,以0补足两位
    %p  AM/PM
    %M  分钟,以0补足两位
    %S  秒钟,以0补足两位
    %f  微秒,以0补足六位
    %j  一年中的第几天,以0补足三位
    %U  一年中的第几周,以全年首个周日后的星期为第0周,以0补足两位
    %w  一年中的第几周,以全年首个周一后的星期为第0周,以 0 补足两位
    %V  一年中的第几周,以全年首个包含1月4日的星期为第1周,以0补足两位


网址导航