python字符串格式化之f-string

目录

1、关于f-string及基本使用

2、表达式求值或函数对象调用

3、格式化和对齐

4、调试模式

5、f-string中引号使用存在的问题

6、f-string中大括号使用存在的问题


1、关于f-string及基本使用

在f-string还没推出之前,我们常用%占位符、.format()方法来格式化字符串,在我接触f-string之后,只想说:f-string用起来真的嘎嘎爽。介绍一下f-string:f-string(Formatted String Literals)是Python 3.6及更高版本中引入的一种强大且易用的字符串格式化方式。

我们一起看看上面提到的三种字符串格式化方法的基本用法:

name='小杨'
age=18
#使用f-string格式化输出变量值name,age
print(f'我叫{name},今年{age}岁了')  #输出:我叫小杨,今年18岁了

#使用.format()方法格式化输出变量值name,age
print('我叫{0},今年{1}岁了'.format(name,age)) #输出:我叫小杨,今年18岁了

#使用%占位符格式化输出变量值name,age
print('我叫%s,今年%d岁了'%(name,age))#输出:我叫小杨,今年18岁了

这样看是不是f-string看起来最简明,直接在字符串字面值中嵌入表达式,并直接在字符串内部进行格式化,简化了传统字符串格式化的操作,用起来相对便捷易懂。

2、表达式求值或函数对象调用

· f-string的大括号{ }里可以填入表达式或调用函数,Python会求出其结果并填入返回的字符串内。

a=10
b=2
c=5
print(f"计算a+b+c={a+b+c}") #输出  计算a+b+c=17

name="yang"
print(f"将name转换为大写:{name.upper()}") #输出 将name转换为大写:YANG

#导入库调用函数
import datetime
print(f"time:{datetime.datetime.now()}") #输出 time:2024-02-29 17:26:56.552906

#对象调用
person = {"name": "John", "age": 30}
print(f"name:{person['name']},age:{person['age']}")#输出name:John,age:30

· f-string中使用lambda匿名函数:可以做复杂的数值计算

b = 8
c = 2
print(f"{(lambda x,y:x*y)(b,c)}") #输出16

说明:注意语法格式的写法,第一个小括号表示的是lambda表达式,第二个小括号表示给lambda表达式传入参数。 (以后有时间分享一下匿名函数lambda)

3、格式化和对齐

可以使用冒号 : 后跟格式规范来指定数值或字符串的显示方式,例如宽度、精度等,总结一下用法{数值:宽度.精度f}:

pi = 3.1415926
print(f"pi的值约等于{pi:.3f}.")  #将pi的值设置为浮点数类型f,并保留三位数.
print(f"{pi:<10.3f}")  #左对齐,总宽度10个字符
print(f"{pi:>10.3f}")  #右对齐
print(f"{pi:^10.3f}")  #居中对齐
# 输出如下:
"""
pi的值约等于3.142.
3.142     
     3.142
  3.142  
"""

类型转换标志符还有:d 整数、f 浮点数、g 根据值的大小选择%f或%e、s 字符串

关于对齐还有个扩展技巧,填充,我们指定了字符串最终的宽度的时候,字符串没有那么多字符不够宽,那么我们就用某种字符(填充字符)来填满这个长度,就是“填充”:

name="yyyy"
print(f"{name:_<10}")  #左对齐,右边填充_
print(f"{name:_>10}")  #右对齐,左边填充_
print(f"{name:_^10}")  #居中对齐,两边填充
#输出如下
"""
yyyy______
______yyyy
___yyyy___
"""

4、调试模式

在 Python 3.8 及以上版本中,可以开启 f-string 的调试模式在 f-string 中包含表达式时直接打印出表达式的名称和值。这种格式特别有用,因为它可以一目了然地看到变量名及其当前赋值,对于任何复杂的表达式,我们都可以这样做:

x = 10
y = 20
z = x * y / 3
print(f"{x=} , {y=} x与y相乘除以3后得到 {z=} ")
# 输出:x=10 , y=20 x与y相乘除以3后得到 z=66.66666666666667 

5、f-string中引号使用存在的问题

 1、f-string大括号内使用的引号不能和大括号外的引号定界符引号冲突,需根据情况灵活切换使用单引号、双引号、单三引号、双三引号。

print(f"我叫{'小杨'}")
print(f'''我叫{'小杨'}''')
print(f'我叫{"小杨"}')
print(f"我叫{'''小杨'''}")
# 只要大括号内外的引号不同,就没有问题。输出如下:
'''
我叫小杨
我叫小杨
我叫小杨
我叫小杨
'''
print(f"我叫{"小杨"}")
#大括号内外引号相同就会报错
'''
    print(f"我叫{"小杨"}")
                    ^^^^^^
SyntaxError: f-string: expecting '}'
'''

2、大括号外的引号还可以使用\转义,但大括号内不能使用\转义

print(f'I\'m{"小杨"}') # 输出:I'm小杨
print(f'I\'m{"小杨"},{I\'m OK}')
#输出
'''
print(f'I\'m{"小杨"},{I\'m OK}')
                                     ^
SyntaxError: f-string expression part cannot include a backslash
'''

6、f-string中大括号使用存在的问题

 f-string大括号外如果需要显示大括号,两个大括号{{ }}就可以显示了;大括号内需要引号,使用引号即可(规则如第5条所述)。

print(f"给大家推荐一本书{{毛泽东选集}}")
#输出:给大家推荐一本书{毛泽东选集}

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值