Python字符串格式化方式一

我们可以通过如下语法(%),完成字符串和变量的快速拼接。

name = "迟博勋"
guanggaoyu = "欢迎来到%s博客" % name

print(guanggaoyu)

# 输出结果:欢迎来到迟博勋博客

语法解释:其中的,%s

  • % 表示:我要占位
  • s 表示:将变量变成字符串放入占位的位置

所以,综合起来的意思就是:我先占个位置,等一会有个变量过来,我把它变成字符串放到占位的位置。

通过这种方式,就可以实现数字类型与字符串类型的拼接!多个类型拼接代码如下:

name = "迟博勋"
tel = 123456

print("我是%s,我的电话号码是%s" % (name,tel))

# 输出结果:我是迟博勋,我的电话号码是123456

注意,多个变量占位,变量要用括号括起来,并按照占位的顺序填入。之所以可以完成数字类型与字符串类型的拼接,是因为%s将数字类型转换成了字符串类型,才完成了拼接!

那么有没有一种方式,不转换类型也能完成拼接呢?是可以的!

在Python中,其实支持非常多的数据类型占位,最常用的三种类型如下:

%s将内容转换成字符串,放入占位位置
%d将内容转换成整数,放入占位位置
%f将内容转换成浮点型,放入占位位置

如下代码,完成字符串、整数、浮点数,三种不同类型变量的占位:

name = "迟博勋"
tel = 123456
tizhong = 75.14
jieguo = "我叫%s,我的电话号码是%d,我的体重是%f" % (name,tel,tizhong)

print(jieguo)

# 输出结果:我叫迟博勋,我的电话号码是123456,我的体重是75.140000

通过输出结果发现,浮点数75.14变成了75.140000,这是为什么?因为没对它做精度控制!

Python字符串格式化 - 数字精度控制

我们可以使用辅助符号"m.n"来控制数据的宽度和精度。

  • m,控制宽度,要求是数字(很少使用)。如果设置的宽度小于自身,那么则不会生效
  • n,控制小数点精度,要求是数字,会进行小数的四舍五入

例如:%5d,表示将整数的宽度控制在5位。如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用三个空格补充宽度。

例如:%5.2f,表示将宽度控制为5,将小数点精度设置为2。

小数点和小数部分也算入宽度计算。例如对11.345设置了%7.2f,结果是:[空格][空格]11.35。2个空格补足宽度,小数部分限制2位精度后,四舍五入为 .35。

代码示例:

num1 = 11
nim2 = 11.345

print("数字11宽度限制5,结果是:%5d" % num1)
print("数字11宽度限制1,结果是:%1d" % num1)
print("数字11.345宽度限制7,小数精度2,结果是:%7.2f" % num2)
print("数字11.345宽度不限制,小数精度2,结果是:%.2f" % num2)

#输出结果:
数字11宽度限制5,结果是:   11         # 空格补充宽度
数字11宽度限制1,结果是:11       # m比数字本身宽度还要小,表现没有写,所以宽度限制1不生效
数字11.345宽度限制7,小数精度2,结果是:  11.35        # 空格补充宽度,四舍五入
数字11.345宽度不限制,小数精度2,结果是:11.35       # 四舍五入

Python字符串格式化方式二

我们可以通过如下语法(f),方便快速完成格式化。

name = "迟博勋"
tel = 123456

print(f"我是{name},我的电话号码是{tel}")

# 输出结果:我是迟博勋,我的电话号码是123456

采用 f“{变量} {变量}” 这种方式格式化,不用理会类型,不做精度控制,适合对精度没有要求的时候快速使用

Python字符串格式化 - 表达式的格式化

上面所说的都是基于变量的。那么为了少写点代码,直接对“表达式”进行格式化也是可以的。首先我们来看一看什么叫做表达式?

表达式:一条具有明确执行结果代码语句

如:1 + 1、5 * 2,这就是表达式,因为它是代码语句并且有具体的结果,结果是一个数字。又或者,常见的变量定义:name = "迟博勋"、age = 11 + 11,等号右侧的都是表达式,因为它们有具体的结果,结果赋值给了等号左侧的变量。

示例代码

print("1 * 1的结果是:%d" % (1 * 1))
print(f"1 * 1的结果是:{1 * 1}")

在无需使用变量进行数据存储的时候,可以直接格式化表达式,简化代码。

最后修改:2022 年 11 月 06 日
如果觉得我的文章对你有用,请随意赞赏