Python %s - 字符串格式化

2025年3月17日 | 阅读 8 分钟

在本教程中,我们将学习如何在 Python 程序中实现和使用 %s。我们还将学习 %s 在字符串中的用途。

Python 中的字符串格式化 %s

基本上,% 符号用于 Python 中具有多种数据类型和配置的各种数据。

谈到 %s,它专门用于在 Python 中执行两个或多个字符串的连接。%s 允许我们在给定的字符串中格式化或放置字符串或数字值。简单来说,Python 中的 %s 用于将给定的字符串包含在另一个字符串中。此运算符会自动将给定值转换为字符串数据类型。

我们将 % 运算符放在需要指定字符串的位置。我们想要追加到给定字符串的值的数量应等于字符串之间的括号中指定的 %s 运算符的数量。

下面的 Python 代码将解释我们使用 %s 运算符执行字符串格式化的方式。

示例 -

输出

Hello Python developers! Welcome to, JavaTpoint!

说明

  • 定义一个名为 'str_value' 的变量,值为 "JavaTpoint!"。
  • 它实现了传统的字符串格式化,该格式化在 'print()' 中使用 '%'
  • 字符串包含一个占位符 '%s',该占位符将被 'str_value' 的字符串值替换。
  • 输出格式化后的字符串:"Hello Python developers! Welcome to, JavaTpoint!"
  • 最后,这两种方法都产生相同的结果,说明了在 Python 中执行字符串格式化的两种可能方式。

如上代码所示,我们声明了一个字符串变量 str,并将其追加到括号内的给定字符串中。我们使用 %s 运算符追加了 str 字符串值。

Python 中 %s 运算符的用途

在本节中,我们将讨论 %s 运算符的重点用途。我们还将学习通过多种方法实现 %s 运算符,以及它对我们有多大帮助。

我们将讨论实现 %s 的以下方法:

  1. 字符串中的多个 %s
  2. 使用 %s 进行字符串映射
  3. 将列表用作字符串使用 %s
  4. 使用 %s 对有序字典进行映射

1. 字符串中的多个 %s

我们可以使用 %s 运算符将给定的字符串变量追加到字符串中,只需将其放在我们想要添加值的位置即可。Python 将简单地在字符串中 %s 运算符使用过的地方添加字符串变量。让我们通过一个例子来理解它。

示例:看以下代码

输出

Hello Python developers, Welcome to the JavaTpoint! We hope you are having a good day.

说明

  • 声明了多个字符串变量 ('mkr1, mkr2, mkr3'),分别赋值为:"developer", "JavaTPoint", 和 "day"。
  • 代码引用了 'print' 函数。在该函数内部,格式化是使用 '%' 的旧式字符串。
  • 在字符串中,有三个占位符 '%s',将从字符串变量中插入值。
  • 字符串值 ('mkr1, mkr2, mkr3') 以元组的形式传递给 '%' 运算符,该运算符将占位符替换为相应的名称。
  • 格式化后的字符串被打印到控制台,其中包含字符串变量的值:"Hello Python developers, Welcome to the JavaTpoint! We hope you are having a good day."
  • 这是一个示例代码,展示了如何使用旧式字符串格式化在 Python 中连接多个字符串。

2. 使用 %s 进行字符串映射

我们还可以使用 %s 运算符将字符串映射到给定程序中。我们可以通过多次使用 %s 运算符将多个字符串变量映射到一个字符串中。但是,当我们想在一个字符串中添加多个字符串变量时,我们必须使字符串中 %s 的出现次数与要替换它的字符串数量匹配。我们必须在 % 运算符之后添加该数量的字符串。

示例:1

输出

Resultant mapped string using '%s' operator:
Hey Python Developers Welcome to JavaTpoint

说明

  • 声明了多个 'mkr' 变量(从 'mkr1 到 mkr6'),每个变量都有特定的值(一个字符串)。
  • 代码通过旧式的字符串格式化和 '%' 运算符来实现此功能,该运算符计算这些变量的值并将它们放入一个字符串中。
  • 创建了一个 'ResultantStr' 字符串,通过转换和格式化来自字符串变量的字符串值。
  • 格式字符串中的 '%s' 占位符被按照此顺序提供的字符串变量的值替换。
  • 使用 'print()' 函数将格式化后的字符串打印到控制台。
  • 输出显示连接后的字符串:" Resultant mapped string using '%s' operator: Hey Python Developers Welcome to JavaTpoint"。
  • 此代码展示了 Python 中一种旧式字符串格式化技术的用法,该技术将许多字符串变量合并为一个字符串。

注意:但是,如果我们没有在 % 运算符后给出与我们使用的 %s 运算符相同数量的字符串变量,那么代码将抛出一个 TypeError,如下面的程序所示:

示例 - 2

输出

Traceback (most recent call last):
  File "C:\Users\Manish\Downloads\code.py", line 9, in 
    ResultantStr = "%s %s %s %s %s %s" % (mkr1, mkr2, mkr4, mkr5, mkr6)
TypeError: not enough arguments for format string

说明

  • 'ResultantStr' 字符串是通过将字符串变量格式化为前面给出的模式而创建的。
  • 具体来说,在这种情况下,渲染的格式字符串与占位符 '%s' 的数量以及 '%' 后面的实际变量列表中的变量数量不同。
  • 格式字符串有六个占位符,但格式化后的字符串在格式 '%' 中只有五个变量。
  • 当格式化字符串时出现 'TypeError' 时就会发生这种情况,这意味着参数和变量的数量不匹配。
  • 代码试图显示获得的结果,但由于错误,它不会产生正确输出。
  • 为了有效地进行字符串格式化,确保格式字符串中的占位符数量与 '%' 运算符后面的变量数量相等非常重要。
  • 此代码片段演示了一个事实:当占位符数量与提供的变量数量不相等时,字符串格式化是运行时错误的最常见原因之一。

3. 将列表用作字符串使用 %s

借助 %s 运算符,我们还可以将给定的列表数据类型变量与字符串变量进行映射,形成一个单一的字符串。我们必须遵循与映射字符串变量时相同的指令集。让我们通过一个例子来理解它。

示例

输出

Resultant mapped string with list variable in it:
Hey Python Developers Welcome to JavaTpoint, ['Java', 'Python', 'C++', 'HTML', 'JavaScript']

说明

  • 代码首先声明字符串变量 (mkr1 到 mkr6) 及其字符串值。
  • 此外,它还指定了一个列表变量 'AList',其中包含字符串值。
  • 通过旧式的字符串格式化,代码将字符串变量和列表变量组合成一个单一的字符串。
  • '%s' 格式字符串在保持预定义顺序的同时,替换了字符串变量和列表中元素的字符串表示。
  • 最终输出 'ResultantStr' 是通过连接所有值形成的,因此是成功的。
  • 代码因此打印出包含列表变量的输出映射字符串,确认字符串格式化和连接成功。

4. 使用 %s 对有序字典进行映射

我们可以在字典数据类型变量中定义多个字符串变量。然后,我们可以通过使用 %s 运算符和字符串变量名,按照我们想要的顺序来调用这些字符串变量。

示例

输出

Resultant mapped string with ordered variable from dictionary: 
Learning %s operator concept at JavaTpoint

说明

  • 初始化了一个字典对象 'ADict',它包含多个键值对,键是字符串类(mkr1 到 mkr6),值是它们的字符串表示。
  • 代码应用旧式字符串格式化 '%' 过程,将字典键的值与预定义的字符串格式相结合。
  • 格式字符串包含占位符 '%()' 以引用字典的键。
  • 占位符使用 '%' 运算符被替换为对应键的关联值。
  • 由于,最终字符串 'ResultantStr' 是通过用字典中的值替换占位符并保持预定义的顺序形成的。
  • 最后,代码打印出最终连接的字符串,显示字典中按正确顺序排列的变量;因此,字符串格式化和映射成功。

下一个主题Python seaborn 库