Python String format() 详解及示例

什么是 Python 字符串的 format() 方法?

Python 字符串的 format() 方法用于在最终字符串中替换、插入或转换带有占位符的字符串。它是 Python 字符串类的一个内置函数,返回格式化后的字符串。字符串中的占位符用花括号定义。

例如,“Welcome to Guru99 {}”.format(‘value here’)。

Python 中 format() 函数的语法

templatestring.format(val1, val2...)

参数

val1, val2 … : 需要在具有花括号 {} 占位符的给定模板字符串中替换的值。占位符可以是字符串、键/值对、整数、浮点数、字符等。

返回值

它将返回最终字符串,其中有效值已替换在花括号内的占位符位置。

占位符

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

string format() 如何工作?

Python 字符串的 format() 方法将扫描原始字符串中的占位符。占位符可以是空的花括号 ({}),也可以是位置参数,即字符串可以包含索引为 0、1 的占位符,例如 {0}、{1} 等。

对于关键字参数,变量名将出现在花括号内,例如 {name}、{age}。对于空花括号,format() 中的值将按顺序替换进去。

第一个值将替换第一个空花括号,然后是下一个。对于位置参数,索引从 0 开始,以此类推。值将作为逗号分隔的列表在 format() 中提供,0th 值指向 format() 中的第一个值,依此类推。

对于关键字参数,即当您在占位符中使用变量时,可以在 format() 中的值顺序随意。

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

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

在下面的示例中,字符串包含空的花括号 ({})。提供给 format() 的值将被替换到花括号 ({}) 中。

我们希望被替换的值是一个字符串。

示例

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

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!

占位符内的格式化

您已经看到,占位符可以是空的、包含变量或索引的。您还可以在占位符内部应用 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 这将输出固定点数格式。默认情况下,您将获得小数点后六位的任何数字的输出。如果您需要最多两位小数,可以将其用作 . 2f,即 . 前面有一个句点 (.) 2f。 print("The value is : {:f}".format(40))

输出

The value is  : 40.000000

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

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 个空格,以便在替换值时显示居中对齐。添加 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 方法中使用该类的对象。占位符将使用类对象引用类属性或成员。

示例

类被调用在 format(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 指的是 format() 中的第一个值。

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

输出

I have     2 dogs and     1 cat

摘要

  • Python 字符串类提供了一个重要的内置命令 format(),它帮助我们在最终字符串中用占位符替换、插入或转换带有有效值的字符串。
  • Python 字符串模块中的占位符用花括号定义,例如,“Welcome to Guru99 {}”.format(‘value here’)。
  • 占位符可以是空的 {},也可以包含变量,例如 {name},或者包含数字索引,例如 {0}、{1} 等。
  • 您可以使用 Python 字符串格式化在占位符内添加填充、居中对齐,还可以帮助进行数字格式化。