自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501
语法参考
f-string是格式化字符串的常量,它是Python3.6新引入的一种字符串格式化方法,主要目的是使格式化字符串的操作更加简便。f-string在形式上是以f或F字母开头的字符串,然后通过一对单引号将要拼接的变量按顺序排列在一起,每个变量名称都需要使用一对花括号括起来,例如输出IP地址格式的字符串,如图1所示。
图1 f-string格式化字符串效果
f-string语法格式如下:
sval=f '{s1}{s2}{s3}……'
f-string功能非常强大,而且使用起来也简单方便,因此Python3.6以上版本推荐使用f-string进行字符串格式化。下面详细介绍一下f-string在各个方面的应用。
快用锦囊
锦囊1 连接指定字符串
连接指定的字符串,代码如下:
s1 = '爵士'
s2 = ' vs '
s3 = '马刺'
newstring = f'{s1}{s2}{s3}'
print(newstring)
运行程序,输出结果为:
爵士 vs 马刺
锦囊2 替换指定内容
f-string用花括号{}表示被替换字段,其中直接填入替换内容即可,代码如下:
name = '零基础学Python'
print(f'您购买的商品是:{name}')
number = 201906140008
print(f'您的会员ID是:{number}')
price = 79.8
print(f'您消费的金额是:{price}')
运行程序,输出结果为:
您购买的商品是:零基础学Python
您的会员ID是:201906140008
您消费的金额是:79.8
锦囊3 表达式求值与函数调用
f-string的大括号{}内还可以填入表达式或调用函数,Python会求出其结果并填入返回的字符串内,例如下面的代码。
print(f'结果为: {1024 * 7688 + 8}')
name = 'MRSOFT'
print(f'转换为小写:{name.lower()}')
print(f'结果为: {(2 + 5j) / (2 - 2j)}')
运行程序,输出结果为:
计算结果为: 7872520
转换为小写:mrsoft
计算结果为: (-0.75+1.75j)
锦囊4 将数字格式化为二进制、八进制、十进制和十六进制
使用f-string可以实现将数字格式化为不同的进制数,省去了进制转换的麻烦,具体介绍如下:
l b:二进制整数格式
l d:十进制整数格式
l o:八进制整数格式
l x:十六进制整数格式(小写字母)
l X:十六进制整数格式(大写字母)
例如,将12345分别格式化为二进制、十进制、八进制和十六进制,代码如下:
a = 12345
print(f'二进制:{a:^#10b}')#居中,宽度10位,二进制整数,显示前缀0b
print(f'十进制:{a:^#10d}')#十进制整数
print(f'八进制:{a:^#10o}')#八进制整数,显示前缀0o
print(f'十六进制:{a:^#10X}')#十六进制整数(大写字母),显示前缀0X
运行程序,输出结果为:
二进制:0b11000000111001
十进制: 12345
八进制: 0o30071
十六进制: 0X3039
锦囊5 字符串左对齐、右对齐和居中
f-string支持三种对齐方式:
l <:左对齐(字符串默认对齐方式);
l >:右对齐(数值默认对齐方式);
l ^:居中。
下面以以左对齐、右对齐和居中输出“吉林省有限公司”,固定宽度18位,代码如下:
a = '吉林省有限公司'
print(f'左对齐:{a:<18}')#左对齐
print(f'右对齐:{a:>18}')#右对齐
print(f'居中对齐:{a:^18}')#居中对齐
运行程序,输出结果为:
左对齐:吉林省有限公司
右对齐: 吉林省有限公司
居中对齐: 吉林省有限公司
锦囊6 为数字添加千位分隔符
在数字中加进一个符号,可以避免因数字位数太多而难以看出它的值。一般每隔三位数加进一个逗号,也就是千位分隔符,以便更加容易认出数值。在Python中也可以实现这样的分隔符。
下面使用f-string实现为数字加千位分隔符。f-string可以使用逗号(,)和下划线(_)作为千位分隔符,其中逗号(,)仅适用于浮点数、复数与十进制整数,而对于浮点数和复数,逗号(,)只分隔小数点前的数位;下划线(_)适用于浮点数、复数和二进制、八进制、十进制和十六进制整数,对于浮点数和复数,下划线(_)只分隔小数点前的数位,而对于二进制、八进制、十六进制整数,固定从低位到高位每隔四位插入一个下划线(_),对于十进制整数则是每隔三位插入一个下划线(_)。下面举例说明,代码如下。
val1=123456.78
print(f'{val1:,}') #浮点数使用,作为千位分隔符
val2= 12345678
print(f'{val2:015,d}') #高位补零,宽度15位,十进制整数,使用,作为千位分隔符
print(f'{val3:30.3e}') #宽度30位,科学计数法,3位小数
val4= 12345678988
print(f'{val4:_o}') #八进制整数,使用_作为千位分隔符
运行程序,输出结果为:
123,456.78
000,012,345,678
5.000e-01+2.500e+00j
1337_6701_6214
锦囊7 在f-string大括号内填入lambda表达式
f-string大括号内也可填入lambda表达式,但lambda表达式的冒号(:)会被f-string误认为是表达式与格式描述符之间的分隔符,为避免歧义,需要将lambda表达式置于括号()内,例如下面的代码:
print(f'结果为:{(lambda x: x ** 8 + 1)(8)}')
print(f'结果为:{(lambda x: x ** 8 + 1) (2):<+8.1f}')
运行程序,输出结果为:
结果为:16777217
结果为:+257.0
锦囊8 将系统日期格式化为短日期
f-string可以对日期进行格式化,如格式化成类似系统中的短日期、长日期等,其适用于date、datetime和time对象,相关介绍如下:
l %d:表示日,是数字,以0补足两位;
l %b:表示月(缩写);
l %B:表示月(全名);
l %m:表示月(数字,以0补足两位)
l %y:年(后两位数字,以0补足两位)
l %Y:年(完整数字,不补零)
下面输出当前系统日期并将其格式化为短日期格式,代码如下:
import datetime
e = datetime.datetime.today() #获取当期系统日期
print('当前系统日期:',e)
print(f'短日期格式:{e:%Y/%m/%d}') #短日期格式
print(f'短日期格式:{e:%Y-%m-%d}')
print(f'短日期格式:{e:%y-%b-%d}')
print(f'短日期格式:{e:%y-%B-%d}')
运行程序,输出结果为:
当前系统日期: 2019-07-31 11:38:02.116061
短日期格式:2019/07/31
短日期格式:2019-07-31
短日期格式:19-Jul-31
短日期格式:19-July-31
锦囊9 将系统日期格式化为长日期
下面使用f-string将当前系统日期格式化为长日期格式,代码如下:
import datetime
e = datetime.datetime.today()
print('当前系统日期:',e) #当期系统日期
print(f'长日期格式:{e:%Y年%m月%d日}') #长日期格式
运行程序,输出结果为:
当前系统日期: 2019-07-31 10:28:29.859975
长日期格式:2019年07月31日
锦囊10 根据系统日期返回星期几
f-string可以根据系统日期返回星期(数字),相关介绍如下:
l %a:星期几(缩写),如'Sun';
l %A:星期几(全名),如'Sunday';
l %w:星期几(数字,0是星期日、6是星期六),如'0'
l %u:星期几(数字,1是星期一、7是星期日),如'7'
下面使用f-string中的%w返回当前系统日期的星期。由于返回的星期是数字,还需要通过自定义函数进行转换,0表示星期日,依次排列直到星期六,代码如下:
import datetime
e=datetime.datetime.today() #获取当前系统日期
#定义数字星期返回星期几的函数
def get_week(date):
week_dict = {
0 : '星期日',
1 : '星期一',
2 : '星期二',
3 : '星期三',
4 : '星期四',
5 : '星期五',
6 : '星期六',
}
day = int(f'{e:%w}') #根据系统日期返回数字星期并转换为整型
return week_dict[day]
print(f'今天是:{e:%Y年%m月%d日}')#长日期格式
print(get_week(datetime.datetime.today())) #调用函数返回星期几
运行程序,输出结果为:
今天是:2019年07月31日
星期三
锦囊11 判断当前系统日期是今年的第几天第几周
f-string可以根据当前系统日期返回一年中的第几天和第几周,相关介绍如下:
l %j:一年中的第几天(以0补足三位),如2019年1月1日返回'001';
l %U:一年中的第几周(以全年首个周日后的星期为第0周,以0补足两位,如'00'),如'30';
l %W:一年中的第几周(以全年首个周一后的星期为第0周,以0补足两位,如'00'),如'30';
l %V:一年中的第几周(以全年首个星期为第1周,以0补足两位,如'01'),如'31'。
下面分别使用f-string中的%j返回当前系统日期是一年中的第几天、使用%U、%W和%V返回当前系统日期是一年中的第几周,代码如下:
import datetime
e = datetime.datetime.today() #获取当前系统日期
print(f'今天是:2019年的第{e:%j}天') #返回一年中的第几天
print(f'今天是:2019年的第{e:%U}周') #返回一年中的第几周
print(f'今天是:2019年的第{e:%W}周')
print(f'今天是:2019年的第{e:%V}周')
运行程序,输出结果为:
今天是:2019年的第212天
今天是:2019年的第30周
今天是:2019年的第30周
今天是:2019年的第31周
锦囊12 根据当前系统日期返回时间
f-string可以根据当前系统日期返回时间,相关介绍如下:
l %H:小时(24小时制,以0补足两位),如'14'
l %I:小时(12小时制,以0补足两位),如'02'
l %p:上午/下午,如上午为'AM',下午为'PM'
l %M:分钟(以0补足两位),如'48'
l %S:秒(以0补足两位),如'48'
l %f:微秒(以0补足六位),如'734095'
下面根据当前系统日期返回时间,代码如下:
import datetime
e = datetime.datetime.today()
print(f'今天是:{e:%Y年%m月%d日}') #长日期格式
print(f'时间是:{e:%H:%M:%S}') #返回当前时间
print(f'时间是:{e:%H时%M分%S秒 %f微秒}') #返回当前时间到微秒(24小时制)
print(f'时间是:{e:%p%I时%M分%S秒 %f微秒}') #返回当前时间到微秒(12小时制)
运行程序,输出结果为:
今天是:2019年07月31日
时间是:14:48:48
时间是:14时48分48秒 734095微秒
时间是:PM02时48分48秒 734095微秒