使用Python的f-string用变量填充或填充字符串

2025年1月5日 | 阅读8分钟

F-string 代表格式化字符串。它由 Python 3.6 版本引入,并很快被用于简单的字符串格式化。F-string 是一种字面字符串,其语法以 f 开头,以 {} 结尾。用于存储变量的占位符将根据这些变量的名称和值进行更新。

字符串格式化,如 str.format()、string.Template() 和 %-formatting 已经可用。然而,使用它们的缺点是实现起来很困难。因此,Python 引入了 f-string,因为它具有简单直接的语法。

例如,考虑以下三种情况:

1. 使用 %-formatting

程序说明

此 Python 代码将变量名设置为“nightfury1”。然后使用 % 运算符(也称为字符串格式化运算符)将 name 的值插入到指定的字符串模板中。使用的字符串模板是 JavaTPoint,一个贡献者。在格式化过程中,变量 name 中包含的值将替换字符串占位符 %s。如果在此实例中 name 是“nightfury1”,则最终字符串将是“nightfury1 is a contributor to JavaTPoint”。此方法可以以有组织的方式连接变量和字符串。

输出

nightfury1 is JavaTPoint, a contributor

2. 使用 str.format()

程序说明

此 Python 代码将变量名设置为“nightfury1”。然后使用 format 方法将 name 的值插入到指定的字符串模板中。在格式化过程中,存储在变量 name 中的值将被用作模板中用作占位符的大括号。如果在此实例中 name 是“nightfury1”,则最终字符串将是“nightfury1 is a contributor to JavaTPoint”。此策略利用 format 方法,以格式化的方式连接文本和变量。

输出

nightfury1 is JavaTPoint a contributor.

3. 使用 f-string

程序说明

使用 f-string,即格式化字符串字面量,此 Python 代码创建了一个带有动态值的字符串。在将字符串“nightfury1”添加到变量 name 后,使用 f-string 创建了一个预备文本。在字符串插值期间,变量 name 被直接插入到由大括号创建的 f-string 占位符中。代码将显示消息“nightfury1 is a contributor to JavaTPoint”。F-string 是一种简单易用的方法,可以将表达式、变量或计算直接插入到字符串字面量中。

输出

nightfury1 is JavaTPoint a contributor.

使用 f-string 的方法

1. f-string 表达式:它在求值 {} 中的字符串后返回结果。

程序说明

使用 f-string,即格式化字符串字面量,此 Python 代码创建了一个带有动态值的字符串。“nightfury1”和“Technical Content Writer Intern”是值。它们被保存在 post 和 name 变量中。f-string 中包含这些变量的大括号占位符。在字符串插值期间,变量的值将被直接插入到这些占位符中。代码的输出将是“nightfury1 is a JavaTPoint Technical Content Writer Intern”。使用 f-string 是一种简洁而富有表现力的方法,用于创建包含嵌入式变量或表达式的字符串。

输出

nightfury1 is JavaTPoint Technical Content Writer Intern.

2. f-string 字典:字典具有键值对的属性,因此 f-string 使用字典属性格式化字符串。

程序说明

在此 Python 代码中,一个名为 JtP 的字典定义了两个键值对:“name”的值为“nightfury1”,“post”的值为“Technical Content Writer Intern”。通过使用大括号作为占位符,字典键“name”和“post”的值被插入到由 f-string 创建的格式化字符串中。JavaTPoint Technical Content Writer Intern nightfury1 是代码的输出。此代码演示了如何使用 f-string 从字典中检索值并在格式化字符串中显示它们。

输出

nightfury1 is JavaTPoint Technical Content Writer Intern.

3. f-string 调试:对提供的表达式中包含的值进行调试,以评估结果。

程序说明

此 Python 代码使用 f-string 和 math.cos() 和 math.sin() 方法,分别在导入 math 模块并将值 0.5 分配给变量 x 后打印变量 x 的余弦和正弦值。代码的输出将显示给定 x 值的计算出的余弦和正弦值。此代码演示了如何使用 math 模块计算三角函数并将结果作为 f-string 格式化的字符串返回。

输出

math.cos(0.5) = 0.8775825618903728
math.sin(0.5) = 0.479425538604203

4. f-string 多行:f 字符出现在每个字符串之前,该字符串在包含在圆括号中时进行求值。结果将在多行上返回。

程序说明

在此 Python 代码中,变量 name、org 和 post 的值分别对应于一个人的姓名、组织和职位。然后,代码使用 f-string 来格式化包含个人姓名、组织和职位的个人信息。最后使用 print() 指令显示预备字符串的内容。此示例展示了如何利用 f-string 创建动态、格式良好的字符串,以便轻松地以易于理解的方式构建和呈现信息。

输出

Name : nightfury1
Organization: JavatPoint
Post: Technical Content Writer Intern.

使用 f-string 进行填充和填充

F-string 填充是指在小数点、特定整数或日期时间之后输入和指定格式的能力。

1. 0 填充:在这里,我们通过在 f-string {} 语法中添加 {variable: 0N} 来应用 0 填充,其中 N 指的是数字的总数。

程序说明

此 Python 代码使用 for 循环遍历从 1 到 5(含)的数字范围。在循环中使用 f-string 输出 i 的当前值。格式说明符:在“i:02”中包含 02 可确保打印的数字至少包含两位数字。对于个位数,将添加前导零以使其更易于理解。由于它保持了输出的宽度恒定,因此在处理可能长度不同的数字时非常有用。当数字小于 10 时,代码会以前导零打印从 01 到 05 的数字。

输出

The number is 01
The number is 02
The number is 03
The number is 04
The number is 05

2. 日期填充:在这里,我们还通过使用 DateTime 模块并向 {} 添加所需的格式,如 {date: directive} 来格式化日期。

程序说明

此 Python 代码使用 datetime 模块获取当前日期和时间。调用 datetime 类的 now() 函数来获取此信息。然后,将获取的 datetime 对象作为 f-string 输出。

f-string 包含以下格式说明符:% Y-%m-%d。在 %H:%M 公式中,%H 代表小时(00 到 23),%m 是月份(以零填充的十进制数字),%d 是月份的日期(以零填充的十进制数字),%M 代表分钟。通过利用此格式说明符,可以将输出格式化为以所需的格式显示当前时间,例如“YYYY- MM”。

输出

Current Time:  2024-01-26 17:34

3. 空格填充:在这种情况下,我们将空格添加到长度为 N 的字符串中,表示为 {variable: N}。因此,如果 N 是 4 且给定的变量是“a”,它将在提供的变量前插入额外的空格。

程序说明

此 Python 代码使用 for 循环遍历从 1 到 5(含)的整数。在循环中使用 f-string 打印每个数字,f-string 的宽度为四个字符。f-string 中的格式说明符“4”表示“i”的值应定位在宽度为 4 的字段内。

输出

The number is    1
The number is    2
The number is    3
The number is    4
The number is    5

4. 对齐填充:众所周知,字符串默认是左对齐的。但是,通过使用 {variable: >N},其中 N 是总长度,我们可以借助 f-string 正确地解释它们。

程序说明

此 Python 程序使用格式化字符串字面量(即 f-string)在 13 个字符的字段宽度内正确对齐地打印四个字符串(s1、s2、s3、s4)。为了实现所需的对齐,由于 f'{string: >13}' 语法,每个字符串都打印有额外的空格在其左侧。结果显示字符串在指定的字段宽度内向右排列,每个行占 13 个字符。

输出

Javatpoint
     vatpoint
       tpoint
        point

F-string 填充是指使用数字或符号在提供的字符串之前和之后输入和定义格式的过程。

1. 硬编码填充:在这种情况下,填充字符或符号是使用 f-string 语法的硬编码添加的。

程序说明

此 Python 程序使用格式化字符串字面量(即 f-string)在 15 个字符的字段宽度内以各种填充字符和对齐方式打印单词“java”。

  • 星号 (*) 字符用于说明行 print(f'{"java":*>15}') 中的左填充。在单词“java”的左侧放置星号,直到字符数超过十五。
  • 行 print(f'"java":*15') 演示了正确的星号填充。单词“java”位于左侧,右侧用星号填充,使总宽度为 15 个字符。

结果将显示单词“java”在选定的字段宽度和对齐方式内的左填充和右填充效果。

输出

***********java
java***********

2. 变量填充:在这种情况下,print() 函数与 f-string 填充的大括号表达式一起使用。

程序说明

在此 Python 程序中,一个循环迭代一个范围,从 6 开始,一直到指定宽度(在此示例中为 15)。在每次迭代中,都使用 f-string 输出一个格式化字符串。字符串“java”的对齐方式是左对齐,右侧用指定的填充字符(星号 '*')填充。随着每次迭代,字段的宽度会增加,显示字符串如何随着填充字符的宽度变化而逐渐扩展。

输出

java**
java***
java****
java*****
java******
java*******
java********
java*********
java**********

F-string 的好处

  • 它是 Python 中格式化字符串最快的方式。
  • 它更易于阅读。
  • 它的风格简洁。
  • 由于其较低的错误倾向,在格式化字符串时出现错误的几率更小。
  • 它的冗余度较低,或者说格式化语法较少。