原文: 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")
这种方法通常被称为“老”方法,因为 Python 3 引入了 str.format()
和格式化字符串常量。
Python 中的 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"))
位置参数
你可以使用 {}
里面的索引号来访问这些参数的值。
在这个例子中,我们在 .format()
里面有两个参数 "trumpet"
和 "drums"
。
.format("trumpet", "drums")
我们可以通过引用索引号来访问字符串中的这些值。{0}
指的是 "trumpet"
的第一个参数,{1}
指的是 "drums"
的第二个参数。
"Steve plays {0} and {1}."
下面是完整的代码和打印的句子:
print("Steve plays {0} and {1}.".format("trumpet", "drums"))
我们可以修改这个例子,调换字符串中的索引号。你会注意到,句子已经改变,参数的位置也被调换了。
print("Steve plays {1} and {0}.".format("trumpet", "drums"))
关键字参数
这些参数由一个 key
value
对组成。我们可以通过使用 {}
里面的键来访问参数的值。
在这个例子中,我们有两个叫作 organization
和 adjective
的键。我们将在字符串中使用这些键。
"{organization} is {adjective}!"
在 .format()
里面,我们有 key
value
对。
.format(organization="freeCodeCamp", adjective="awesome")
下面是完整的代码和打印的句子:
print("{organization} is {adjective}!".format(organization="freeCodeCamp", adjective="awesome"))
如何混合关键字和位置参数
在 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()
的括号内,我们将把我们的变量分配给键 name
、adjective
、hours
和 disney_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))
什么是格式化字符串常量
格式化字符串常量(或称 f-strings)允许你在字符串中包含表达式。在字符串之前,你要放置一个 f
或 F
,告诉计算机你要使用一个 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.")
你也可以用 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}")
什么是模板字符串
模板字符串是使用占位符来表示真实值的 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"))
总结
在 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)允许你在字符串中包含表达式。在字符串之前,你可以放置一个 f
或 F
,告诉计算机你想使用一个 f-string
。
variable = "some value"
f"this is a string {variable}"
你也可以通过从标准库中导入 Template
class 来使用模板字符串。模板字符串是使用占位符的 Python 字符串,用来表示真实的值。
Template("$placeholder").substitute(placeholder="real value")
我希望你觉得这篇文章对你有帮助,祝你在 Python 旅程中好运。