【f-string】Python高效率的字符串格式化

简介

f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,主要目的是使格式化字符串的操作更加简便。
f-string在形式上是以 f 或 F 修饰符引领的字符串(f’xxx’或 F’xxx’),以大括号 {} 标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。
f-string在功能方面不逊于传统的%-formatting语句和str.format()函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化。

用法

变量名

name = "world"
topic = f"hello {name}"
print(topic)  # hello world

内联运算

topic = f"{1 + 2 * 3}"  # 7

函数

# 自定义函数
cnt = lamnda x, y: x + y
a = 1
b = 2
topic = f"{cnt(a, b}"  # 3
# 或直接
topic = f"{(lamnda x, y: x + y)(a, b)}"  # 3

# 内置函数
name = "WORLD"
topic = f"hello {name.lower()}"  # hello world

注意

大括号

f-string大括号外如果需要显示大括号,则应输入连续两个大括号{{ }};大括号内需要引号,使用引号即可。

name = "world"
topic = f"hello {name}{{!}}"  # hello world{!}

多重引号

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

name = "world"
topic = f"hello {name + '~~~'}"  # hello world~~~
topic = f"""I'm {"hello " + name}"""  # I'm hello world

转义符

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

name = "world"
topic = f"hello\n{name}"
print(topic)
# hello
# world

补充

填充

name = "world"
# 默认空白填充
# 左填充
topic = f"{name:>10}"  # "     world"
# 右填充
topic = f"{name:<10}"  # "world     "
# 两侧填充
topic = f"{name:^10}"  # "  world   "
# 指定符号填充
topic = f"{name_:>10}"  # "_____world"

数值正负

说明:

符号说明
‘’+‘’正加+,负加-
‘’-‘’负加-,正不加
‘’ ‘’负加-,正加空
a = 10
b = -10
aa = f"{a:+}"  # "+10"
bb = f"{b:+}"  # "-10"
aa = f"{a:-}"  # "10"
bb = f"{b:-}"  # "-10"
aa = f"{a: }"  # " 10"
bb = f"{b: }"  # "-10"

数字宽度精度

说明:

描述说明
width整数width指定宽度
0width整数width指定宽度,高位用0补足宽度
width.precision整数width 指定宽度,整数precision表示显示精度
a = 123.456
aa = f"{a:10}"  # "   123.456"
aa = f"{a:010}"  # "000123.456"
aa = f"{a:8.1f}"  # "   123.5"
aa = f"{a:8.2f}"  # "  123.46"
aa = f"{a:.2f}"  # "123.46"
# 在width后面,直接加f,表示补足小数点后的位数至默认精度6
aa = f"{a:2f}"  # "123.456000'

截断

当需要格式化的数据类型是“字符串”的时候,才会发生截断。

a = "hello world"
aa = f"{a:.5}"  # "hello"
# 截断并填充
aa = f"{a:10.5}"  # "hello     "
aa = f"{a:_>10.5}"  # "_____hello"

时间信息

针对date、datetime和time对象,进行年月日、时分秒等信息提取

>>> from datetime import date
# today()返回本地时间的一个date对象
a = date.today()  # datetime.date(2021, 10, 12)
aa = f"{a:%Y-%m-%d}"  # "2021-10-12"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值