Python 中字符串格式化的不同方式:前 3 种方法

已发表: 2021-02-23

字符串格式化是编程语言中用于格式化或在字符串中插入用户指定的值和位置的基本功能。 C 语言有一种方法可以做到这一点,如果您对 C 语言有一定的经验,您可能会熟悉这种方法。 然而,Python 支持的不是 1 种,不是 2 种,而是 3 种不同的字符串格式化方式。 每种方式都有其优点和缺点,我们将在本教程中看到。 我们还将看看这 3 种方法中哪一种是最常用和最有效的方法。

学习世界顶尖大学的在线数据科学课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

在本教程结束时,您将了解以下内容:

  • 字符串格式化的不同方式
  • 它们的用法与示例
  • 哪种方式最受青睐

目录

字符串格式化的不同方式

Python 已获得多项更新以改进字符串格式。 让我们一一介绍它们。

方法一:C风格字符串格式化

Python 通过对每种数据类型使用特殊字符来包含旧的字符串格式化方式。 这种很好的旧字符串格式化方法是从 C 语言中采用的,并且仍然非常有效。 字符串格式说明符“%”后跟每种数据类型的专用字符用于格式化字符串。

让我们通过一个小例子来理解这一点:

数 = 8
名称=“粉红人”
print(“名字是 %s,数字是 %d” %( name, num))

#输出
>> “名字是pinkman,数字是8”

如您所见,格式说明符 %s 用于格式化字符串名称,而 %d 用于格式化整数 num。 同样,浮点数也有一个格式说明符。 让我们也检查一下。

数量 = 4.32
利斯 = [ 1 , 3 , 5 ]
print( "list 是 %s,float 是 %f" %(lis, num))

#输出
>> 列表[ 1 , 3 , 5 ]并且浮点数4.320000

在上面的示例中,我使用 %f 格式说明符来格式化浮点值。 这里需要注意两点。 一,浮点值打印为 4.320000 而不仅仅是 4.32。 为什么这样? 这是因为 Python 默认使用 6 位小数精度的浮点数。 其次,我使用字符串格式说明符打印了一个列表。 这并不意味着 %s 格式说明符可以接受任何数据类型。 它只是将其转换为字符串并打印出来。 所以打印出来的列表本质上是一个字符串,而不是一个列表。

好的,那么如何指定需要多少小数点精度呢?

print("list is %s and float with 2 point accuracy is %.2f" %(lis, num))

#输出
>> 列表[ 1 , 3 , 5 ]并且浮点数4.32

这里要注意的另一点是,我们需要按照它们在字符串中的使用顺序给出变量。 如果更改顺序,则将输出设置为相应地受到影响。 不需要我们每次都以正确的顺序给出变量的另一种方法是以稍微不同的方式使用字符串格式。

print(“list 是 %(a)s,float 是 %(b)f” %{“b”: num, “a”: lis})

#输出
>> 列表[ 1 , 3 , 5 ]并且浮点数4.320000

如你所见,这写起来非常麻烦。

总结一下,3 个最常用的格式说明符是:

  1. %s 用于字符串
  2. %d 表示整数
  3. %.<十进制精度>f 用于浮点数

方法 2:新样式字符串格式

Python 3 通过对字符串使用 format() 方法引入了一种更好的字符串格式化方法。 通过放置大括号来使用占位符,格式方法包含需要放在字符串中这些位置的变量。 让我们看一个小例子来理解这一点。

名称=“斯凯勒”
print(“嗨,我叫{}”.format(name))

#输出
>> 你好,我斯凯勒

这比我们上面看到的旧式格式要好得多。 花括号充当包含字符串的变量名称的占位符。 请注意,使用 format 方法,我们不需要像在旧式格式中那样指定变量的数据类型。

一个带有数字的例子:

数 = 3
整数 = 4.34
名称= “杰西”

print( “嗨,我的名字是 {},数字是 {},浮点数是 {}” .format(name, num, int))

#输出
>> 你好,我叫jessy ,数字3 浮点数4.34

整洁的! 如您所见,它需要按照它们在字符串中的使用顺序将变量传递给格式方法。 另一种使用格式方法的方法是不需要我们以正确的顺序传递所有变量:

print(“嗨,我的名字是 {name},数字是 {num},浮点数是 {int}”.format(int=int, num=num , name=name))

#输出
>> 你好,我叫jessy ,数字3 浮点数4.34

在上面的示例中,我们看到当变量在占位符中明确提及时,不再需要以正确的顺序将它们传递给格式化方法。

我们还可以在占位符中传递变量的位置,以更好地跟踪它们。

print(“嗨,我的名字是 {0},数字是 {1},浮点数是 {2}”.format(name, num, int))

#输出
>> 你好,我叫jessy ,数字3 浮点数4.34

方法 3:使用 F 字符串

在 Python 3.6 中引入的 f-strings 是进行字符串格式化的最简单和最有效的方法。 这些也称为格式化字符串文字。 他们在字符串的开头使用文字 f 来告诉 python 将其视为格式化字符串。 占位符包含需要放在该位置的实际变量。

让我们看一个例子。

名称=“海森堡”
bill = 100.43print(f”名字是{name},账单是{bill}”)

#输出
>> 名字海森堡账单100.43

这很容易。 此外,我们还可以直接放入表达式而不是变量。

a = 5
b = 8

print( f"总和是{a+b} " )

#输出
>> 总和13

我们也可以直接调用函数并在字符串文字中获取它们的输出。

print( f"名字是{name.upper()} " )

#输出
>> 这个名字海森堡

此外,我们也可以使用 f 字符串直接从函数返回值。

def combiner(姓名,年龄,金钱):
return f”{name} 的年龄是 {age} 并且有薪水 {money}”

Saul Goodman 45薪水2000000

如我们所见,当我们将函数直接传递给占位符时,它会调用函数并将输出直接放在花括号中。 显然,这种字符串格式化方法是最有效且易于编写的方法。

结帐: Python 面试问答

在你走之前

字符串格式化是一项常规任务,Python 引入 format 方法和 f 字符串的方式使使用 Python 的人非常容易。 f-strings 是处理字符串格式的最常用和首选的方式,因为它非常易于编写和维护。 此外,它还使代码更加 Pythonic! 在后台, f 字符串使用 __format__ 协议。 f 字面量只是 Python 为其用户提供的语法糖,使我们更容易编写字符串格式。

如果您想了解数据科学,请查看 IIIT-B 和 upGrad 的数据科学执行 PG 计划,该计划是为在职专业人士创建的,提供 10 多个案例研究和项目、实用的实践研讨会、行业专家的指导、1与行业导师一对一,400 多个小时的学习和顶级公司的工作协助。

Python 3 中的哪些格式化方法允许多次替换和值格式化?

1. Python 的内置字符串 format() 方法将提供的字符串转换为更有用的输出。 Python3 中的 format() 函数是允许多次替换和值格式化的字符串格式化方法之一。 format() 方法使用位置格式来连接字符串中的项目。
2. 可以使用多对花括号来格式化字符串。 如果在长字符串中需要另一个变量替换,则可以添加第二组花括号并将第二个值传递到过程中。
3. Python 中的 format() 函数接受任意数量的参数。 但是,它主要分为以下两种参数。
一种。 位置参数是一个参数列表,可以通过将参数的索引放在大括号(索引)中来检索这些参数。
湾。 关键字参数 – 这是一个 key=value 参数列表,可以使用花括号内的参数键访问这些参数。
4. format() 方法返回一个已经格式化的字符串。 format() 函数读取提供给它的参数类型,并根据字符串中的格式代码对它们进行格式化。

在 Python 3 中如何在没有换行符的情况下打印?

在 Python 3 中为您的 print 方法添加一个额外的参数,以告诉计算机您不希望下一个字符串位于新行上。 考虑以下场景。
print('欢迎!', end = ')
在这种情况下,任何进一步的打印功能都将出现在同一行。

我们可以在 Python 中将字符串转换为浮点数吗?

1. 如果我们通过终端的用户输入以及从文件中读取它来获取浮点值,它们就是字符串对象。 因此,我们必须显式地将它们转换为浮点数,以便执行必要的操作,如加法、乘法等。
2. Python中的float()方法可用于将字符串转换为浮点数。 它是用于将浮点数转换为对象的内置函数。 在内部,float() 函数调用所提供对象的 __float__() 函数。