Python 字符串格式()用例子解释

⚡ 智能摘要

Python `String format()` 是一个内置方法,它会将模板字符串中的花括号占位符替换为提供的值。占位符可以接受空花括号、位置索引或关键字名称,并支持最终输出的数字、对齐方式和填充格式说明符。

  • 🔤 占位符: 花括号 {} 表示值的位置——空值、编号值 {0} 或命名值 {name}。
  • 🔢 位置和关键词: format() 函数按顺序、按索引位置或按匹配的关键字名称填充空的大括号。
  • 🎛️ 格式说明符: 冒号用于添加诸如 {:d}、{:b}、{:.2f} 和 {:x} 之类的代码,分别用于十进制、二进制、定点和十六进制输出。
  • ↔️ 对齐方式和内边距: 使用 {:^10} 或 {:,} 来设置宽度数字,使文本居中,添加间距,并插入千位分隔符。
  • 🧱 对象和字典: 占位符使用 {c.attr} 读取类属性,使用 {m[key]} 读取字典值。
  • 🤖 人工智能辅助: AI 编码助手可以根据纯语言提示生成 format() 调用和 f-string 等效项。

Python 字符串格式()

什么是 Python 字符串格式()?

Python 字符串格式() 是一个函数,用于将字符串替换、替换或转换为最终字符串中有效值的占位符。它是 Python string 类,返回格式化的字符串作为输出。字符串内的占位符在花括号中定义。

例如,“欢迎来到 Guru99 {}”.format('此处填写值')。

format() 函数的语法 Python

templatestring.format(val1, val2...)

参数

值1,值2…: 给定模板字符串中需要替换的值,该字符串以大括号 {} 的形式包含占位符。占位符可以是字符串、键/值对、整数、浮点数、字符等。

返回值

它将返回最终的字符串,并用有效值替换大括号中给出的占位符。

占位符

模板字符串中的占位符使用花括号表示,例如 {}。占位符可以是空的 {},也可以是变量,例如 {name} ,也可以是数字索引,例如 {0} 、 {1} 等。

字符串 format() 如何工作?

Python 字符串格式() 方法将扫描原始字符串以查找占位符。占位符可以是空花括号 ({}),位置参数,即字符串可以具有索引 0、1 的占位符,例如 {0}、{1} 等。

对于关键字参数,变量名称将出现在花括号内,例如 {name}、{age}。如果花括号为空,则格式中的值将按顺序替换花括号内的值。

第一个值将被替换为第一个空花括号,然后是下一个值。对于位置参数,索引将从 0 开始,依此类推。值将以逗号分隔的格式提供,0th value 将指向格式中的第一个值等等。

对于关键字参数,即当您在占位符内使用变量时,您可以根据需要在格式内设置值的顺序。

这里的顺序并不重要,因为值将根据 format() 中存在的变量名称进行替换。以下是一些示例,说明如何在字符串中使用占位符作为空、位置以及使用关键字或变量。

示例:用字符串值替换空占位符

在下面的示例中,字符串有空的大括号({})。 赋予格式的值将在大括号({})内被替换。

我们想要替换的值是一个字符串。

计费示例:

使用字符串格式化 Python我们希望将花括号 ({}) 替换为字符串值。该值传递给 format(“Guru99”)。执行时,花括号 {} 将被替换为 Guru99,您将得到最终字符串“Welcome to”。 Guru99 个教程。

print ("Welcome to {} tutorials".format("Guru99"))

输出:

Welcome to Guru99 tutorials

示例:用数值替换空占位符

在下面的例子中,我们希望在原始字符串中替换数值。花括号 ({}) 被添加到需要数值的位置。执行时,空花括号 ({}) 将被替换为数值。

计费示例:

您还可以使用 format() 在字符串中插入数字。该示例将展示如何用 format() 中的数字 99 替换空的占位符 {}。

print ("Welcome to Guru{} Tutorials".format("99"))

输出:

Welcome to Guru99 Tutorials

示例:在占位符内使用变量或关键字参数

也可以使用花括号内的变量,如下例所示。变量在 format() 内部定义。因此,执行时,赋给变量的值会被替换到原始字符串中。

计费示例:

您可以在花括号内使用变量,例如 {name} {num}。name 和 num 变量的值可在 format 中使用,例如 format(name=”Guru”,num=”99”。name 和 num 的值将被替换到 {name} 和 {num} 中。

print ("Welcome to {name}{num} Tutorials".format(name="Guru", num="99"))

输出:

Welcome to Guru99 Tutorials

示例:在占位符内使用索引或位置参数

可以使用占位符内的索引(如 0、1、2)替换值。值将按顺序从 format() 中选取,如下例所示。

计费示例:

print ("Welcome to {0}{1} Tutorials".format("Guru","99"))

输出:

Welcome to Guru99 Tutorials

示例:在字符串中使用多个占位符

在此示例中,我们将使用多个空占位符。

计费示例:

示例中使用的字符串有多个空占位符,每个占位符将引用 format() 内的值。第一个值将被替换为第一个占位符,依此类推。

print ("{} is {} new kind of {} experience!".format("Guru99", "totally","learning"))

输出:

Guru99 is totally new kind of learning experience!

占位符内的格式

您已经看到,可以将 Placeholder 设置为空,也可以使用变量或索引。您还可以应用 Python 占位符内的字符串格式。

以下是格式列表

格式 描述 例如:
:d 在占位符内使用时,它将以十进制格式输出 print("The binary to decimal value is : {:d}".format(0b0011))

输出:

The binary to decimal value is  : 3
:b 在占位符内使用时,它将以二进制格式输出 print("The binary value is : {:b}".format(500))

输出:

The binary value is : 111110100
:e 当在占位符内使用时,它将以科学格式给出输出,输出中的指数 e 将为小写。 print("The scientific value is : {:e}".format(40))

输出:

The scientific format value is : 4.000000e+01
:E 在占位符内使用时,它将以科学格式提供输出,输出中的指数 E 将为大写 print("The scientific value is : {:E}".format(40))

输出:

The scientific value is : 4.000000E+01
:f 这将输出定点数格式。默认情况下,您将获得具有六位小数的任何数字的输出。如果您需要最多 2 位小数,请将其用作。2f,即 2f 前面有一个句点 (.) print("The value is : {:f}".format(40))

输出:

The value is  : 40.000000

示例:显示最多 2 位小数的输出。

print("The value is : {:.2f}".format(40))

输出:

The value is: 40.00
:o 这将输出八进制格式 print("The value is : {:o}".format(500))

输出:

The value is  : 764
:x 这将以小写形式输出十六进制格式 print("The value is : {:x}".format(500))

输出:

The value is  : 1f4
:X 这将以大写形式输出十六进制格式。 print("The value is : {:X}".format(500))

输出:

The value is  : 1F4
:n 这将输出数字格式。 print("The value is : {:n}".format(500.00))

输出:

The value is  : 500
:% 这将以百分比格式给出输出。
默认情况下,百分比输出将保留 6 位小数,如果您不想要任何小数,则可以使用句点 0,即 (:.0%)。
print("The value is : {:%}".format(0.80))

输出:

The value is  : 80.000000%

此示例显示如何通过在占位符内使用 {:.0%} 来跳过小数位。

print("The value is : {:.0%}".format(0.80))
输出:

The value is: 80%
:_ 这将输出下划线作为千位分隔符。从 Python 3.6 开始可用。 print("The value is {:_}".format(1000000))

输出:

The value is  : 1_000_000
:, 这将输出逗号作为千位分隔符 print("The value is : {:,}".format(1000000))

输出:

The value is  : 1,000,000

添加逗号(,)作为千位分隔符,如输出所示。

: 这将在任何正数前添加一个空格 此示例显示如何在给定数字前添加空格或填充。数字 5 表示您希望在数字前添加的空格数。

print("The value is: {:5}".format(40))

输出:

The value is:    40
:- 这将在负数前添加一个减号 该示例显示如何使用 {:-} 获取在数字前带有减号 (-) 的输出。

print("The value is: {:-}".format(-40))

输出:

The value is: -40
:+ 您可以使用加号来表示数字为正数 该示例显示如何使用 {:+} 获取在数字前带有加号 (+) 的输出。

print("The value is: {:+}".format(40))

输出:

The value is: +40
:= 等号用于将 +/- 符号放在左侧。 该示例显示如何使用 {:=} 获取在等号前带有加号 (+/-) 的输出。

print("The value is {:=}".format(-40))

输出:

The value is -40
:^ 这将使最终结果居中对齐 示例显示使用 {:^} 将文本居中对齐。数字 10 用于在替换值时添加 10 个空格以显示居中对齐。

print("The value {:^10} is positive value".format(40))

输出:

The value     40     is a positive value

这里可以使用 10,这将在最终文本中添加 10 个空格,并且要替换的值将在 10 个空格之间居中对齐。添加 10 个空格只是为了显示替换值的居中对齐。

:> 这将使最终结果右对齐 使用(:>10)添加10的空格,并且替换的值右对齐。

print("The value {:>10} is positive value".format(40))

输出:

The value         40 is positive value
:< 这将使最终结果左对齐 使用(:<10)添加10的空格,并且替换的值左对齐。

print("The value {:<10} is positive value".format(40))

输出:

The value 40         is positive value

使用带有 format() 的类

在这个例子中,我们创建一个类并在 .format 中使用该类的对象 Python 方法。占位符将使用类对象引用类属性或成员。

计费示例:

该类以以下格式调用:(c=MyClass())。对象 c 将引用类 MyClass() 内的属性和方法。

class MyClass:
    msg1="Guru"
    msg2="Tutorials"   

print("Welcome to {c.msg1}99 {c.msg2}!".format(c=MyClass()))

输出:

Welcome to Guru99 Tutorials!

使用带有 format() 的字典

也可以使用 format() 中的字典,如下例所示:

my_dict = {'msg1': "Welcome", 'msg2': 'Guru99'}
print("{m[msg1]} to {m[msg2]} Tutorials!".format(m=my_dict))

输出:

Welcome to Guru99 Tutorials!

填充变量替换

使用 string.format() 方法,您可以在字符串内使用占位符添加填充和空格。

计费示例:

以下示例将使用 format() 在占位符内添加空格。要添加空格,您必须在冒号 (:) 后的花括号内指定空格数。因此占位符将看起来像 {:5}。

print("I have {:5} dogs and {:5} cat".format(2,1))

输出:

I have     2 dogs and     1 cat

您还可以在占位符内给出索引,例如:{0:5},其中 0 将引用格式内的第一个值。

print("I have {0:5} dogs and {1:5} cat".format(2,1))

输出:

I have     2 dogs and     1 cat

常见问题

添加的 f 字符串 Python 3.6 版本可以直接嵌入表达式,通常运行速度更快。format() 方法在旧版本上仍然有效。 Python 版本以及模板来自变量、文件或用户输入的情况。

% 运算符使用类似 printf 的符号,例如 %s 和 %d,而 format() 函数使用花括号占位符,支持名称、索引和更丰富的格式说明符。由于 format() 函数在重排序和布局方面处理得更清晰,因此在现代代码中取代了 % 运算符。

Double 戴上牙套,逃离他们。泰ping 两个左大括号打印一个字面大括号,两个右大括号打印一个右大括号,因此,在同一个模板字符串中,真正的占位符仍然可以与字面大括号一起使用。

缺少位置值会引发 IndexError,缺少关键字或字典名称会引发 KeyError。允许传递比占位符更多的值,多余的值会被忽略,因此只有缺失的引用(而非多余的引用)才会导致错误。

format() 方法在 Python 2.6 和每一个 Python 3. 版本更新。自动字段编号功能,即花括号为空,而不是写成 {0} {1},需要 Python 2.7 或 3.1 及更高版本。

序号 Python 字符串是不可变的,因此 `format()` 函数会生成并返回一个全新的字符串,而模板保持不变。您可以将结果赋值给一个变量,例如 `message = template.format(value)`,以便保存格式化后的文本供后续使用。

机器学习代码使用 format() 函数生成易于阅读的日志,为语言模型构建提示模板,并将准确率等指标精确到固定小数位。清晰格式化的输出使实验和模型报告更易于比较。

是的。GitHub Copilot 可以根据您提供的简短注释自动补全 format() 函数及其指定符,该注释描述了您想要的输出结果。Agentic AI 助手的功能更进一步,它还能将 format() 函数转换为 f 字符串、自动校正对齐方式并自动运行测试。

总结一下这篇文章: