原文: Python String Format – Python S Print Format Example

在 Python 中,你有几个选项来格式化你的字符串。在这篇文章中,我将介绍 str.format()、格式化字符串常量(formatted string literals)和模板字符串。

但首先,让我们看一下被认为是格式化字符串的“老方法”。

什么是 Python 中的 % 字符串格式化

在 Python 中格式化字符串的一种较早的方法是使用 % 操作符。

下面是基本语法:

"This is a string %s" % "string value goes here"

你可以创建字符串,并在该字符串中使用 %s,这就像一个占位符。然后你可以在 % 后面写上你想使用的实际字符串值。

下面是一个使用 % 字符串格式化的基本例子。

print("Hi, my name is %s" % "Jessica")
Screen-Shot-2021-09-06-at-10.31.53-PM

这种方法通常被称为“老”方法,因为 Python 3 引入了 str.format() 和格式化字符串常量。

Python 中的 str.format() 方法是什么

下面是 str.format() 方法的基本语法:

"template string {}".format(arguments)

在模板字符串中,我们可以使用 {},作为参数的占位符。参数是将在字符串中显示的值。

在这个例子中,我们想打印 "Hello, my name is Jessica. I am a musician turned programmer."

在字符串中,我们将有三个 {},它们将作为 Jessica、musician 和 programmer 值的占位符。这些被称为格式字段。

"Hello, my name is {}. I am a {} turned {}."

str.format() 的这些括号内,我们将使用 “Jessica”、“musician” 和 “programmer” 值。

.format("Jessica", "musician", "programmer")

下面是完整的代码和打印的句子:

print("Hello, my name is {}. I am a {} turned {}.".format("Jessica", "musician", "programmer"))
Screen-Shot-2021-09-03-at-10.32.14-PM

位置参数

你可以使用 {} 里面的索引号来访问这些参数的值。

在这个例子中,我们在 .format() 里面有两个参数 "trumpet""drums"

.format("trumpet", "drums")

我们可以通过引用索引号来访问字符串中的这些值。{0} 指的是 "trumpet" 的第一个参数,{1} 指的是 "drums" 的第二个参数。

"Steve plays {0} and {1}."

下面是完整的代码和打印的句子:

print("Steve plays {0} and {1}.".format("trumpet", "drums"))
Screen-Shot-2021-09-03-at-11.04.33-PM

我们可以修改这个例子,调换字符串中的索引号。你会注意到,句子已经改变,参数的位置也被调换了。

print("Steve plays {1} and {0}.".format("trumpet", "drums"))
Screen-Shot-2021-09-03-at-11.06.17-PM

关键字参数

这些参数由一个 key value 对组成。我们可以通过使用 {} 里面的键来访问参数的值。

在这个例子中,我们有两个叫作 organizationadjective 的键。我们将在字符串中使用这些键。

"{organization} is {adjective}!"

.format() 里面,我们有 key value 对。

.format(organization="freeCodeCamp", adjective="awesome")

下面是完整的代码和打印的句子:

print("{organization} is {adjective}!".format(organization="freeCodeCamp", adjective="awesome"))
Screen-Shot-2021-09-03-at-11.44.14-PM

如何混合关键字和位置参数

str.format() 中,你可以混合关键字和位置参数。

在这个例子中,我们将创建一个关于去迪斯尼乐园的小故事。

我们首先要为 name、number、adjective 和 disneyland ride 创建几个变量。

name = "Sam"
adjective = "amazing"
number = 200
disney_ride = "Space Mountain"

然后我们要使用关键字和位置参数来创建我们的字符串。我将添加 \n 来告诉计算机在每个句子后面创建一个新行。

"I went to {0} with {name}.\nIt was {adjective}.\nWe waited for {hours} hours to ride {ride}."

str.format() 的括号内,我们将把我们的变量分配给键 nameadjectivehoursdisney_ride{0} 的值为 "Disneyland"

.format("Disneyland", name=name, adjective=adjective, hours=number, ride=disney_ride)

下面是完整的代码和打印的句子:

name = "Sam"
adjective = "amazing"
number = 200
disney_ride = "Space Mountain"

print("I went to {0} with {name}.\nIt was {adjective}.\nWe waited for {hours} hours to ride {ride}."
      .format("Disneyland", name=name, adjective=adjective, hours=number, ride=disney_ride))
Screen-Shot-2021-09-04-at-12.20.41-AM

什么是格式化字符串常量

格式化字符串常量(或称 f-strings)允许你在字符串中包含表达式。在字符串之前,你要放置一个 fF,告诉计算机你要使用一个 f-string

下面是基本的语法:

variable = "some value"
f"this is a string {variable}"

这是一个基本的例子,打印句子 Maria and Jessica have been friends since grade school.

name = "Jessica"
print(f"Maria and {name} have been friends since grade school.")

如果我在字符串前面使用 F,结果是一样的。

name = "Jessica"
print(F"Maria and {name} have been friends since grade school.")
Screen-Shot-2021-09-06-at-6.21.48-PM

你也可以用 f-string 来格式化字典中的数据。

在这个例子中,我们有一个字典,它代表了男子大学篮球队的排名,以及他们在 32 场比赛中赢了多少场。

rankings = {"Gonzaga": 31, "Baylor": 28, "Michigan": 25, "Illinois": 24, "Houston": 21}

我们可以使用 for 循环和 items() 方法来浏览排名字典的每个键值对。

for team, score in rankings.items():

for 循环内部,我们可以使用 f-string 来格式化打印结果。

{team:10}{score:10d} 中的 : 告诉计算机创建一个 10 个字符宽的字段。这将为数据创建偶数列。

这里 {score:10d} 里面的 d 指的是一个十进制的整数。

 print(f"{team:10} ==> {score:10d}")

下面是完整的代码和打印的句子:

rankings = {"Gonzaga": 31, "Baylor": 28, "Michigan": 25, "Illinois": 24, "Houston": 21}

for team, score in rankings.items():
    print(f"{team:10} ==> {score:10d}")
Screen-Shot-2021-09-06-at-9.48.53-PM

什么是模板字符串

模板字符串是使用占位符来表示真实值的 Python 字符串。

下面是基本语法:

Template("$placeholder").substitute(placeholder="real value")

让我们看一个例子来更好地了解它是如何工作的。

在这个例子中,我们想用模板字符串打印 I love to learn with freeCodeCamp!

为了使用模板字符串,你首先要从标准库中导入 Template class。

from string import Template

然后你可以使用 Template class,在括号内提供一个字符串。我们要在 name 前面放一个 $,它以后会被替换成真正的值。

Template("I love to learn with $name!")

然后我们在模板中添加 .substantial,并将 freeCodeCamp 的值分配给 name

.substitute(name="freeCodeCamp")

下面是完整的代码和打印的句子:

from string import Template

print(Template("I love to learn with $name!").substitute(name="freeCodeCamp"))
Screen-Shot-2021-09-06-at-10.11.27-PM

总结

在 Python 中,有许多方法来格式化你的字符串。

旧的格式化字符串的方法是使用 % 操作符。

"This is a string %s" % "string value goes here"

%s 作为实际值的占位符。你把实际的值放在 % 操作符之后。

这种方法通常被称为“老”方法,因为 Python 3 引入了 str.format() 和格式化字符串常量(f-strings)。

str.format() 方法中,你使用 {} 作为占位符,并将实际的值放在括号内。这个方法可以接受位置参数和关键字参数。

"template string {}".format(arguments)

格式化字符串常量(f-strings)允许你在字符串中包含表达式。在字符串之前,你可以放置一个 fF,告诉计算机你想使用一个 f-string

variable = "some value"
f"this is a string {variable}"

你也可以通过从标准库中导入 Template class 来使用模板字符串。模板字符串是使用占位符的 Python 字符串,用来表示真实的值。

Template("$placeholder").substitute(placeholder="real value")

我希望你觉得这篇文章对你有帮助,祝你在 Python 旅程中好运。