在 Python 中插值字符串
我们将介绍 Python 中字符串插值的概念以及字符串插值的方法,例如 f-strings
、%-formatting
、str.format()
和 Template strings。
在构建单个或多个用户将使用的应用程序时,我们必须多次使用字符串插值来实现用户友好的界面。字符串插值是将变量的值添加到字符串中的占位符中。
例如,如果我们想在登录时欢迎用户,我们需要使用特定的字符串,例如 Hello {person name}, Welcome Back!
。
我们需要放在这个字符串中的人名存储在数据库中。当我们从数据库中获取它时,名称将保存在一个变量中,我们必须使用字符串插值来输出它。
在 Python 中使用 f-strings
插值字符串
随着 Python 3.6 的更新,引入了一种新的字符串插值方法,称为文字字符串插值。用于此文字字符串插值的前缀是 f
。
这种方法非常强大且易于使用。借助此方法,我们可以轻松访问字符串中嵌入的 Python 表达式。
现在,让我们来看一个示例,在该示例中,我们将用户名存储在一个变量中,然后使用它来显示一条问候消息。有了这个,我们将了解它的语法和用法。
# python
name = 'Husnain'
print(f'Hello {name}! Good Morning, Have a nice day.')
在上面的示例中,文字前缀 f
告诉 Python 恢复大括号内的变量 name
值。
这种字符串插值方法很强大,因为我们还可以嵌入任意 Python 表达式。
因此,让我们来看另一个示例,在该示例中,我们将使用字面前缀 f
在字符串中执行算术表达式,如下所示。
# python
a = 5
b = 3
print(f'5 multiply by 3 is {a * b}.')
在 Python 中使用 %-formatting
插值字符串
在 Python 中,字符串有一个独特的内置操作,可以使用 %
运算符轻松访问。我们可以使用%
轻松进行简单的字符串插值。
让我们了解它的语法和用法。
# python
print("%s %s" %('Hello', 'Husnain',))
如你所见,我们使用了%s
字符串格式说明符,括号内有两个字符串。我们在输出中得到了两个字符串。
%s
字符串格式说明符将告诉 Python 替换该值。
现在,我们从变量中添加值,而不是括号中的字符串。我们可以通过稍微改变语法来快速实现这一点,如下例所示。
# python
name = 'Husnain'
print('Hello %s! Good Morning! have a nice day.' %(name))
假设我们有多个变量,并且我们可能不必按照括号中的顺序输出变量。在这种情况下,我们也可以使用变量名来调用变量,如下所示。
# python
name = 'Husnain'
greet = 'Evening'
print('Hello %(name)s! Good %(greet)s! have a nice day.' %(greet, name))
以这种方式使用 %
运算符使我们的格式字符串在将来更易于维护和更新。我们不必担心订单。
我们可以轻松地替换变量,无论我们如何订购它都可以正常工作。
在 Python 中使用 Str.format()
插值字符串
Str.format()
是 Python 中另一种可用于字符串插值的方法。该方法在语法和用法上与 %-formatting
几乎相同。
在 Str.format()
中,我们在字符串对象和大括号上使用 format()
函数。我们在 format()
函数中使用变量,这些变量值显示在 {}
中。
让我们通过一个例子来理解这个方法的语法。
# python
name = 'Husnain'
print('Hello {}'.format(name))
上面的例子与我们在%-formatting
中使用的例子几乎相似。
假设我们有多个变量要插入到字符串中。在这种情况下,我们可以在 {}
中使用变量名来指定在字符串的某个点使用哪个变量,如下所示。
# python
name = 'Husnain'
greet ='morning'
print('Hello {name}! Good {greet}.'.format(name=name,greet=greet))
在 Python 中使用模板字符串插值字符串
模板字符串也可用于字符串插值。这些是用于字符串插值的更直接且功能更弱的方法。
我们需要导入 Template 类的字符串模块来使用下面的这个方法。
# python
from string import Template
现在,我们可以使用 Template
方法定义变量并创建一个新模板,如下所示。
# python
name = 'Husnain'
greet = 'Morning'
newTemplate = Template('Hello $name! Good $greet.')
我们可以打印这个模板,但我们必须使用 substitute
方法替换模板中的值。
# python
print(newTemplate.substitute(name = name, greet = greet))
概括
以下是关于我们使用的上述方法的一些要点。
f-strings
方法是最强大和最简单的方法,它也增加了代码的可读性。%-format
方法是一个老方法,不推荐使用,因为它降低了代码的可读性。- 在
str.format()
中,我们需要将字符串对象传递给format()
函数以进行字符串插值。 - 在模板字符串中,我们通过从内置字符串模块中导入模板类来创建模板。
在本教程中,我们讨论了可用于字符串插值的四种不同方法。我们还学习了语法以及如何在我们的应用程序中毫无问题地使用所有这些方法。