昆明平台网站开发,除尘环保设备网站模板,网站域名注册商,汕头seo优化培训介绍
Python的str.format()方法是 string 类的一部分#xff0c;它允许您进行变量替换和值格式化。这使您能够通过位置格式化在字符串中连接元素。
本教程将指导您了解Python中格式化程序的一些常见用法#xff0c;这可以使您的代码和程序更具可读性和用户友好性。
使用格…介绍
Python的str.format()方法是 string 类的一部分它允许您进行变量替换和值格式化。这使您能够通过位置格式化在字符串中连接元素。
本教程将指导您了解Python中格式化程序的一些常见用法这可以使您的代码和程序更具可读性和用户友好性。
使用格式化程序
格式化程序通过在字符串中插入一个或多个替换字段或占位符由一对花括号 {} 定义并调用str.format()方法来工作。您将向该方法传递您想要与字符串连接的值。当运行程序时该值将在与占位符相同位置传递。
让我们打印一个使用格式化程序的字符串
print(Sammy has {} balloons..format(5))Sammy has 5 balloons.在上面的例子中我们构建了一个带有一对花括号的字符串作为占位符
Sammy has {} balloons.然后我们添加了str.format()方法并将整数5的值传递给该方法。这将在原始字符串中的花括号位置放置值5
Sammy has 5 balloons.我们还可以将变量赋值为等于具有格式化程序占位符值的字符串
open_string Sammy loves {}.
print(open_string.format(open source))Sammy loves open source.在第二个例子中我们将字符串open source与较大的字符串连接起来替换原始字符串中的花括号。
Python中的格式化程序允许您使用花括号作为str.format()方法中将传递的值的占位符。
使用具有多个占位符的格式化程序
在使用格式化程序时您可以使用多对花括号。如果我们想要在上面的句子中添加另一个变量替代可以通过添加第二对花括号并将第二个值传递到方法中来实现
new_open_string Sammy loves {} {}. #2 {} placeholders
print(new_open_string.format(open-source, software)) #通过逗号分隔将2个字符串传递到方法中Sammy loves open-source software.为了添加另一个替代我们在原始字符串中添加了第二对花括号。然后我们通过逗号分隔地传递了两个字符串到str.format()方法中。
按照相同的语法我们可以添加额外的替代
sammy_string Sammy loves {} {}, and has {} {}. #4 {} placeholders
print(sammy_string.format(open-source, software, 5, balloons)) #通过逗号分隔将4个字符串传递到方法中Sammy loves open-source software, and has 5 balloons.在sammy_string中我们添加了4对花括号作为变量替代的占位符。然后我们通过逗号分隔将4个值传递到str.format()方法中混合了字符串和整数数据类型。这些值之间由逗号分隔。
使用位置和关键字参数重新排序格式化程序
当我们在花括号中留空没有任何参数时Python将按顺序替换通过str.format()方法传递的值。正如我们到目前为止所看到的一个具有两个空花括号的格式构造其中传递了两个值的方法如下
print(Sammy the {} has a pet {}!.format(shark, pilot fish))Sammy the shark has a pet pilot fish!第一对花括号由字符串值shark替换第二对由字符串值pilot fish替换。
存在于方法内的值如下所示
(shark, pilot fish)它们本质上是 tuple 数据类型元组中包含的每个值都可以通过其索引号进行调用索引号从0开始。
我们可以将这些索引号传递到原始字符串中作为占位符的花括号中
print(Sammy the {0} has a pet {1}!.format(shark, pilot fish))在上面的例子中输出将与我们不传递索引号到花括号中时得到的输出相同
Sammy the shark has a pet pilot fish!但是如果我们反转用于占位符的参数的索引号我们可以反转传递到字符串中的值
print(Sammy the {1} has a pet {0}!.format(shark, pilot fish))Sammy the pilot fish has a pet shark!如果在元组中有索引位置0和1的值并调用索引位置2则会发生错误。当调用超出范围的索引号时将收到错误消息
print(Sammy the {2} has a pet {1}!.format(shark, pilot fish))IndexError: tuple index out of range我们看到的错误消息是指元组只在索引号0和1处具有值因此将索引号2放在范围之外。
让我们添加一些额外的占位符和一些额外的要传递的值以便更好地理解我们如何重新排序格式化程序。首先这是一个具有四个占位符的新字符串
print(Sammy is a {}, {}, and {} {}!.format(happy, smiling, blue, shark))Sammy is a happy, smiling and blue shark!没有参数的情况下传递给str.format()方法的值按顺序连接到字符串中。
元组中包含的字符串值对应于以下索引号
“happy”“smiling”“blue”“shark”0123
让我们使用值的索引号来更改它们在字符串中出现的顺序
print(Sammy is a {3}, {2}, and {1} {0}!.format(happy, smiling, blue, shark))Sammy is a shark, blue, and smiling happy!由于我们从索引号3开始我们首先调用了值为shark的最后一个值。包含为占位符指定的其他索引号的参数会更改原始字符串中单词出现的顺序。
除了位置参数外我们还可以引入通过其关键字名称调用的关键字参数
print(Sammy the {0} {1} a {pr}..format(shark, made, prpull request))Sammy the shark made a pull request.此示例显示了在位置参数与关键字参数一起使用关键字参数的用法。我们可以在关键字参数pr旁边填充关键字参数并可以移动这些参数以更改生成的字符串
print(Sammy the {pr} {1} a {0}..format(shark, made, prpull request))Sammy the pull request made a shark.与字符串格式化程序一起使用的位置和关键字参数使我们能够通过重新排序来更好地操作原始字符串。
指定类型
我们可以在语法的花括号内包含更多的参数。我们将使用格式代码语法{field_name:conversion}其中field_name指定我们在重新排序部分中讨论过的str.format()方法的参数的索引号conversion是您在与格式化程序一起使用的数据类型的转换代码。
转换类型指的是Python使用的单字符类型代码。我们将在此处使用的代码有s表示字符串d表示显示十进制整数10进制以及我们将使用的f表示带小数点的浮点数。您可以通过Python 3的官方文档阅读有关格式规范微语言的更多信息。
让我们看一个例子其中有一个整数通过该方法传递但我们希望它以浮点数的形式显示通过添加f转换类型参数
print(Sammy ate {0:f} percent of a {1}!.format(75, pizza))Sammy ate 75.000000 percent of a pizza!我们使用了{field_name:conversion}的语法用于第一个花括号替换字段以输出浮点数。第二个花括号仅使用第一个参数{field_name}。
在上面的例子中小数点后显示了很多数字但是您可以将这些数字限制为较少的数字。当指定f以显示浮点数值时可以通过在转换类型f之前包含一个完整停止符.后跟您要包含的小数点后的数字来指定该值的精度。
如果 Sammy 吃了 75.765367% 的披萨但我们不需要高精度我们可以通过在转换类型f之前添加.3来将小数点后的位数限制为3
print(Sammy ate {0:.3f} percent of a pizza!.format(75.765367))Sammy ate 75.765 percent of a pizza!如果我们只想要一个小数位数我们可以像这样重写字符串和方法
print(Sammy ate {0:.1f} percent of a pizza!.format(75.765367))Sammy ate 75.8 percent of a pizza!请注意修改精度会导致数字四舍五入。
虽然我们将数字显示为不带小数点的浮点数但如果我们尝试使用d转换类型将浮点数更改为整数则会收到错误
print(Sammy ate {0:d} percent of a pizza!.format(75.765367))ValueError: Unknown format code d for object of type float如果您不希望显示小数点后的位数可以像这样编写您的格式化程序
print(Sammy ate {0:.0f} percent of a pizza!.format(75.765367))Sammy ate 76 percent of a pizza!上述示例将浮点数更改为整数而不是将浮点数转换为整数但会限制小数点后的位数。
填充变量替换
由于占位符是替换字段因此可以通过在附加参数后通过增加字段大小来填充或在元素周围创建空间。当我们需要在视觉上组织大量数据时这可能非常有用。
我们可以在冒号:后在我们的语法的花括号中添加数字来指示字段大小以字符为单位
print(Sammy has {0:4} red {1:16}!.format(5, balloons))Sammy has 5 red balloons !在上面的例子中我们为数字5指定了一个字符字段大小为4并为字符串balloons指定了一个字符字段大小为16因为它是一个很长的字符串。
正如我们所看到的默认情况下字符串在字段内左对齐而数字在字段内右对齐。您可以通过在冒号后添加一个对齐代码来修改此设置。将在字段中左对齐文本^将文本居中在字段中将文本右对齐。
让我们将数字左对齐并将字符串居中
print(Sammy has {0:4} red {1:^16}!.format(5, balloons))Sammy has 5 red balloons !现在我们看到5是左对齐的提供了在red之前的字段中的空间balloons在其字段中居中其左右都有空间。
默认情况下使用格式程序扩大字段时Python将字段填充为空格字符。我们可以通过在冒号后直接跟随一个字符来修改为不同的字符
print({:*^20s}.format(Sammy))*******Sammy********我们正在接受传递给str.format()的字符串在索引位置0处因为我们没有指定其他参数包括冒号并指定我们将使用*而不是空格来填充字段。我们正在使用^居中字符串指定字段的大小为20并且还指示我们正在处理字符串转换类型通过包含s。
我们可以将这些参数与我们之前使用过的其他参数结合使用
print(Sammy ate {0:5.0f} percent of a pizza!.format(75.765367))Sammy ate 76 percent of a pizza!在花括号内的参数中我们指定了浮点数的索引字段号并包含了冒号指定字段大小的数字加上小数点写入小数点后的位数然后指定转换类型为f。
使用变量
到目前为止我们已经将整数浮点数和字符串传递到str.format()方法但是我们也可以传递变量。这与任何其他变量一样。
nBalloons 8
print(Sammy has {} balloons today!.format(nBalloons))Sammy has 8 balloons today!我们可以为原始字符串和传递到方法中的内容使用变量
sammy Sammy has {} balloons today!
nBalloons 8
print(sammy.format(nBalloons))Sammy has 8 balloons today!变量可以轻松替代我们的格式化程序语法结构的每个部分。这使得在接受用户生成的输入并将这些值分配给变量时更容易处理。
使用格式化程序组织数据
当使用格式化程序来进行变量替换时可以有效地对字符串进行连接和组织值和数据。格式化程序在将字符串连接在一起的同时提供了一种基本但非描述性的方式并且在确保输出可读且用户友好时非常有用。
让我们看一下Python中的一个典型的for循环它将在3到12范围内打印出ii*i和i*i*i
for i in range(3, 13):print(i, i * i, i * i * i)3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
11 121 1331
12 144 1728虽然输出在某种程度上是有组织的但数字会溢出到彼此的列中使底部的输出不太可读。如果您正在处理具有许多小数和大数字的更大数据集这可能会带来问题。
让我们使用格式化程序来为这些数字提供更多的空间
for i in range(3, 13):print({:3d} {:4d} {:5d}.format(i, i * i, i * i * i))在这里我们在花括号中没有添加索引号的字段名并且从冒号开始后跟字段大小的数字和一个d转换类型因为我们正在处理整数。在此示例中我们为每个预期输出的大小提供了2个额外的字符空间具体取决于可能的最大数字大小因此我们的输出如下 3 9 274 16 645 25 1256 36 2167 49 3438 64 5129 81 72910 100 100011 121 133112 144 1728我们可以指定一个一致的字段大小数字以确保有均匀的列确保我们适应更大的数字
for i in range(3, 13):print({:6d} {:6d} {:6d}.format(i, i * i, i * i * i))3 9 274 16 645 25 1256 36 2167 49 3438 64 5129 81 72910 100 100011 121 133112 144 1728我们还可以通过在冒号后添加^和进行文本对齐将d更改为f以添加小数点更改字段名索引号以确保我们按预期显示数据。
结论
使用格式化程序进行变量替换可以是连接字符串和组织值和数据的有效方法。格式化程序以一种基本但非描述性的方式表示将变量替换到字符串中的过程并且在确保输出可读且用户友好时非常有用。