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"{'''}")
在大括号最后加上冒号":"表示要按照指定的格式输出
字符串对齐和长度:":[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补足两位