【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"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: f-stringPython3.6及更高版本中引入的一种字符串格式化方法。除了基本的变量插入外,f-string还支持一些高级的用法。 首先,f-string支持表达式的内嵌计算。我们可以在花括号内使用任何有效的Python表达式,例如函数调用、数学运算等。这样我们可以直接在格式化字符串中执行计算,避免了额外的步骤。 其次,f-string还支持设定字段的宽度和对齐方式。可以在花括号中使用冒号(:)来进行格式设置。可以指定字段的宽度以及对齐方式(左对齐:<,右对齐:>,居中对齐:^),方便美化输出格式。 另外,f-string还可以在花括号内使用格式化说明符。格式化说明符可以用来指定数值的显示格式,如小数位数、千位分隔符等。通过在冒号后加上格式化指令,可以实现更加灵活的数值格式化。 此外,f-string还支持特殊字符的转义。在花括号内使用双花括号({{}})表示打印花括号字符本身,避免被解析为变量插入。 总的来说,f-string提供了一种简洁而强大的字符串格式化方式。它可以方便地嵌入变量和表达式,支持字段宽度和对齐方式的设置,允许使用格式化说明符进行数值格式化,并支持特殊字符的转义。这些高级用法使得f-string在日常编程中能够更好地满足我们对字符串格式化的需求。 ### 回答2: Python 3 中的 f-string 是一种方便的字符串格式化方法,在格式化字符串时具有一些高级用法。 首先,可以在 f-string 中使用表达式。除了简单的变量名外,还可以在大括号中使用任何有效的表达式,例如数学运算、函数调用等。这样可以灵活地对字符串进行计算或处理。 其次,可以在 f-string 中使用属性和方法。如果大括号中的表达式是一个对象的属性或方法调用,f-string 将自动获取或调用它们的值。这使得处理对象属性和方法时更加方便。 此外,可以在 f-string 中使用格式化选项。通过在大括号中使用冒号:,可以指定格式化选项。例如,可以设置宽度、精度、填充字符等等。这样可以方便地控制输出的格式。 另外,可以在 f-string 中使用字典和列表。通过使用花括号 {} 和索引或键名,可以方便地获取字典和列表中的元素,并进行格式化输出。 最后,可以在 f-string 中使用循环和条件语句。通过在大括号中使用循环和条件表达式,可以根据需要多次输出字符串或进行条件判断,并灵活地处理输出结果。 综上所述,Python 3 的 f-string 提供了一种高级的字符串格式化方法,不仅可以进行简单的变量替换,还可以使用表达式、属性和方法、格式化选项、字典和列表、循环和条件语句等高级功能。这些特性使得 f-string 成为一种非常方便和灵活的字符串格式化工具。 ### 回答3: Python3中的f-string是一种方便且直观的格式化字符串的方式。除了基本的字符串插值功能外,它还有一些高级用法,可以更灵活地处理字符串格式化需求。 一、格式化变量: f-string可以直接在字符串中插入变量,并使用大括号{}将变量包裹起来。可以在大括号内使用简单表达式对变量进行格式化。例如: name = 'Alice' age = 20 print(f'My name is {name} and my age is {age}.') # 输出:My name is Alice and my age is 20. 二、格式化数字: f-string支持在大括号内使用格式化选项,对数字进行格式化。例如: num = 3.1415926 print(f'The value of pi is approximately {num:.2f}.') # 输出:The value of pi is approximately 3.14. 三、调用函数: f-string中可以直接调用函数,并将函数的返回值插入到字符串中。例如: def get_greeting(): return 'Hello' print(f'{get_greeting()} World!') # 输出:Hello World! 四、使用表达式: f-string支持在大括号内使用复杂的表达式,可以对变量进行运算、取长度等操作。例如: name = 'Alice' print(f'My name is {name.upper()} and my name has {len(name)} characters.') # 输出:My name is ALICE and my name has 5 characters. 总结: Python3的f-string是一种强大的字符串格式化工具,它不仅可以简洁地插入变量,还支持格式化数字、调用函数和使用表达式。它的高级用法可以满足更复杂的字符串格式化需求,提高开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值