f-string——格式化字符串

自学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位,十进制整数,使用,作为千位分隔符

val3 = 0.5 + 2.5j

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微秒

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子味冰可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值