【Python】关于F-Strings的六种高级用法

文摘   科技   2024-08-26 07:39   江苏  








01


引言





大家好,我是AI算法之道!


Python是我最喜欢的编程语言之一,它向来以其简单性、多功能性和可读性而闻名。


在Python编程中有各种各样的小技巧,在本文中,我们将深入探讨Python3中关于字符串中F-Strings的六个高级用法,希望可以帮助到大家!





02


调试模式

首先,我们来介绍一下F-strings的调试功能。大家可以直接使用 `{variable = }`,而不用手动编写 "variable ="。
x = 10y = 20
print(f"x = {x}, y = {y}") print(f"{x = }, {y = }")
# math operationsprint(f"{x * y = }")
这样可以节省大量时间和精力,使代码看起来更整洁。在 F-Strings调试功能中,还可以执行数学运算,如上述例子中的最后一行所示。




03


 格式化数字


使用 F-strings 可以对字符串执行各种格式化和转换操作。下面是一些常见的格式化操作:
  • 设置小数点位数:`:.nf`,其中n为小数点位数

  • 十六进制转换
  • 二进制转换

  • 八进制转换

  • 科学计算法转换

  • 用前导零填充数字:`:0n`,其中n 是字符总数
number = 4200
print(f"number: {number:.2f}")print(f"hex: {number:#0x}")print(f"binary: {number:b}")print(f"octal: {number:o}")print(f"scientific: {number:e}") print(f"Number: {number:09}") print(f"Thousand separator: {number:,}")
输出结果如下:
number: 4200.00hex: 0x1068binary: 1000001101000octal: 10150scientific: 4.200000e+03Number: 000004200Thousand separator: 4,200
如果希望 F-Strings输出一个百分比,可以使用 `:.2%`,它告诉 Python 将数值格式化为小数点后两位,并在末尾添加一个百分号。
percentage = 0.1234print(f"Percentage: {percentage:.2%}")
输出结果如下:
Percentage: 12.34%



04


 日期格式化


就像使用 pandas 或在应用程序中格式化日期一样,可以使用 `:` 在 F-Strings符串中定义所需的格式。
以下是我们如何定义格式化 UTC 日期时间:
  • 无微秒

  • 仅限日期

  • 仅限时间

  • AM/PM 时间

  • 24 小时制
例子如下:
import datetime
today = datetime.datetime.utcnow()print(f"datetime : {today}\n")
print(f"date time: {today:%m/%d/%Y %H:%M:%S}")print(f"date: {today:%m/%d/%Y}")print(f"time: {today:%H:%M:%S.%f}") print(f"time: {today:%H:%M:%S %p}") print(f"time: {today:%H:%M}")

输出结果如下:

datetime : 2024-08-25 09:23:26.093653
date time: 08/25/2024 09:23:26date: 08/25/2024time: 09:23:26.093653time: 09:23:26 AMtime: 09:23




05


Repr & Str


如果大家经常使用Python编写面向对象编程 (OOP),就应该熟悉双下划线方法 __repr__和 __str__。基本概念定义如下:

  • __repr__对开发人员友好

  • __str__:对用户友好

下面是一个具有name和 age属性的数据类 Person的示例。
from dataclasses import dataclass
@dataclassclass Person: name: str age: int
def __str__(self) -> str: return f"{self.name} is {self.age} years old"
Elon = Person("Elon Musk", 51)print(f"{Elon}") # strprint(f"{Elon!r}") # repr

输出结果如下:

Elon Musk is 51 years oldPerson(name='Elon Musk', age=51)

在默认情况下(没有定义 __str__),打印对象会给出 __repr__输出。如果定义了 __str__,则需要使用 `!r` 来告诉 Python 打印 __repr__输出。







06


对齐


如果要在特定位置打印变量,对齐是最好的选择!
number = 4print(f"number is {number:4}")  # width of 4
# numbersfor number in range(1, 5): print(f"the number is {number:{number}}")
left = "left text"center = "center text!"right = "right text"
print(f"{left:>20}") # left alignprint(f"{center:^20}") # center alignprint(f"{right:<20}") # right align
print(f"{left:<20}{center:^20}{right:>20}")

输出结果如下:

number is    4the number is 1the number is  2the number is   3the number is    4           left text    center text!    right text          left text               center text!              right text

注意上述代码中"number:n"这里,n表示打印变量number的宽度(包括变量本身)。我们可以选择左对齐、居中对齐或右对齐。

例如,"left:>20 "表示从左侧打印宽度为 20 个字符的字符串

`center:20` 表示将字符串 "center text!"居中,两边空格相等。由于 "center text!"有 12 个字符,因此两边各有 4 个空格。




07


多行格式化字符串


最后但并非最不重要的一点是,大家可以使用多行 F-Strings。只需使用三层引号 ''',并在 F 字符串中定义内容即可。
company_name = "Tesla"employee_count = 100000mission = "To accelerate the world's transition to sustainable energy"

print(f"""Company: {company_name}# of employees: {employee_count:,}Mission: {mission}""")

输出结果如下:

Company: Tesla# of employees: 100,000Mission: To accelerate the world's transition to sustainable energy







08


总结


本文重点介绍了python中字符串F-Strings格式化输出的六个高阶技巧,希望这些小技巧可以帮助到大家,提升大家的工作效率!



您学废了吗?






点击上方小卡片关注我




添加个人微信,进专属粉丝群!






AI算法之道
一个专注于深度学习、计算机视觉和自动驾驶感知算法的公众号,涵盖视觉CV、神经网络、模式识别等方面,包括相应的硬件和软件配置,以及开源项目等。
 最新文章