深度测评Python的3种“字符串格式化”方法,看看你喜欢哪一种?(一)

简介: 深度测评Python的3种“字符串格式化”方法,看看你喜欢哪一种?(一)

3种字符串格式化工具的简单介绍

python2.5版本之前,我们使用的是老式字符串格式化输出%s。


从python3.0版本开始起(python2.6同期发布),Python中同时支持两个版本的格式化,多出来的一个新版本就是利用format()函数,进行格式化输出。


但是python3.6版本后,又引入了一种新的字符串格式化方式f-string。从%s格式化到format格式化再到f-string格式化,格式化的方式越来越直观,f-string的效率也较前两个高一些,使用起来也比前两个更简单一些。

image.png


3种字符串格式化工具的应用对比

1)基本用法

这里首先先介绍这3个工具的基本用法,基本格式如下。


%格式化:占位符%,搭配%符号一起使用;

format()格式化:占位符{},搭配format()函数一起使用;

f-string格式化:占位符{},搭配f符号一起使用;

① 对比使用,观察各自的特点

a = "%s张飞、%s关羽、%s刘备、%s赵云" % (1,2,3,4)
display(a)
b  = "{}张飞、{}关羽、{}刘备、{}赵云".format(1,2,3,4)
display(b)
c  = f"{1}张飞、{2}关羽、{3}刘备、{4}赵云"
display(c)


结果如下:

image.png


② %格式化

此种方式只支持固定形式的格式化填充,给的顺序和填充顺序完全一致。


a = "四大天王:%s、%s、%s、%s" % ("刘德华","郭富城","张学友","黎明")
print(a)


结果如下:


image.png

③ format()格式化

此种方式不仅支持固定形式的格式化填充,还支持位置格式化填充,即共有三种形式。


第一种方式:固定形式的格式化填充,给的顺序和填充顺序完全一致。

第一种方式:大括号{ }中写的是format()传入值所对应的下标。

第二种方式:大括号{ }中的变量,和format()传入值是一一对应的。

# 第一种形式
b1 = "四大天王:{}、{}、{}、{}".format("刘德华","郭富城","张学友","黎明")
print(b1)
# 第二种形式
b2 = "四大天王:{2}、{0}、{3}、{1}".format("刘德华","郭富城","张学友","黎明")
print(b2)
# 第三种形式
x1 = "刘德华"
x2 = "郭富城"
x3 = "张学友"
x4 = "黎明"
b3 = "四大天王:{p}、{q}、{r}、{s}".format(p=x4,q=x2,r=x1,s=x3)
print(b3)


结果如下:

image.png


④ f-string格式化

此种方式的填充,用起来更加随意,直接在{}中输入变量即可,极其方便,我们用一个简单的案例看看。


# 直接在{}中输入变量即可,位置随意放
x1 = "刘德华"
x2 = "郭富城"
x3 = "张学友"
x4 = "黎明"
c = f"四大天王:{x1}、{x3}、{x2}、{x4}"
print(c)


结果如下:

image.png


3)填充功能对比

首先我们要知道填充的概念是什么,只有知道了它的概念,才能够灵活运用。


概念:当指定了字符串最终的长度,但是现有的字符串没有那么长,那么我们就用某种字符(填充字符)来填满至这个长度,这就是“填充”。

① %格式化

格式:"%10s" % (“字符串”),使用前仔细观察书写格式;

含义:上述10代表字符串的填充长度。如果字符串的长度,大于填充长度,填充长度无效;如果字符串的长度,小于填充长度,则会将字符串长度填充至指定的填充长度;

注意:此种填充,默认是在字符串左侧填充;

a = "%s" % ("黄同学")
print(a,len(a))
b = "%10s" % ("黄同学")
print(b,len(b))
c = "%10s" % ("黄同学,我早上吃了一碗热干面")
print(c,len(c))


结果如下:

image.png


② format()格式化

格式:"{:10}".format(“字符串”),使用前仔细观察书写格式;

含义:上述10代表字符串的填充长度。如果字符串的长度,大于填充长度,填充长度无效;如果字符串的长度,小于填充长度,则会将字符串长度填充至指定的填充长度;

注意:此种填充,默认是在字符串右侧填充;

a = "{:10}".format("黄同学")
print(a,len(a))
b = "{:10}".format("黄同学")
print(b,len(b))
c = "{:10}".format("黄同学,我早上吃了一碗热干面")
print(c,len(c))


结果如下:

image.png


③ f-string格式化

格式:f"{name1:10}",使用前仔细观察书写格式;

含义:上述10代表字符串的填充长度,name1代表某个字符串变量。如果字符串的长度,大于填充长度,填充长度无效;如果字符串的长度,小于填充长度,则会将字符串长度填充至指定的填充长度;

注意:此种填充,默认是在字符串右侧填充;

name1 = "黄同学"
name2 = "黄同学,我早上吃了一碗热干面"
a = f"{name1:10}"
print(a,len(a))
b = f"{name2:10}"
print(b,len(b))


结果如下:

image.png


3)对齐功能对比

首先我们要知道填充的概念是什么,只有知道了它的概念,才能够灵活运用。


概念:"对齐"要与"填充"一起使用,才会显得有意义。当我们进行填充的时候,我们可以选择只在字符串左侧填充,也可以选择只在字符串右侧填充,还可以选择在字符串两侧填充(字符串居中显示的填充方式);

① %s:实现对齐功能,只有左对齐和右对齐;

# 左填充
a = '%10s' % ('黄同学')
print(a,len(a))
# 右填充
b = '%-10s' % ('黄同学')
print(b,len(b))


结果如下:

image.png


② format():实现对齐功能,不仅有左对齐和右对齐,还有居中对齐;

# 左填充
a = '{:>10}'.format('黄同学')
print(a,len(a))
# 右填充
b = '{:<10}'.format('黄同学')
print(b,len(b))
# 居中填充
c = '{:^10}'.format('黄同学')
print(c,len(c))


结果如下:

image.png


③ f-string:实现对齐功能,不仅有左对齐和右对齐,还有居中对齐;

name = "黄同学"
a = f"{name:>10}"
print(a,len(a))
b = f"{name:<10}"
print(b,len(b))
c = f"{name:^10}"
print(c,len(c))


结果如下:

image.png

相关文章
|
28天前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
47 3
|
26天前
|
Python
在 Python 中,如何将日期时间类型转换为字符串?
在 Python 中,如何将日期时间类型转换为字符串?
120 64
|
15天前
|
安全
Python-打印99乘法表的两种方法
本文详细介绍了两种实现99乘法表的方法:使用`while`循环和`for`循环。每种方法都包括了步骤解析、代码演示及优缺点分析。文章旨在帮助编程初学者理解和掌握循环结构的应用,内容通俗易懂,适合编程新手阅读。博主表示欢迎读者反馈,共同进步。
|
18天前
|
存储 测试技术 Python
Python 中别再用 ‘+‘ 拼接字符串了!
通过选择合适的字符串拼接方法,可以显著提升 Python 代码的效率和可读性。在实际开发中,根据具体需求和场景选择最佳的方法,避免不必要的性能损失。
39 5
|
22天前
|
Python
使用Python计算字符串的SHA-256散列值
使用Python计算字符串的SHA-256散列值
24 7
|
23天前
|
JSON 安全 API
Python调用API接口的方法
Python调用API接口的方法
105 5
|
1月前
|
算法 决策智能 Python
Python中解决TSP的方法
旅行商问题(TSP)是寻找最短路径,使旅行商能访问每个城市一次并返回起点的经典优化问题。本文介绍使用Python的`ortools`库解决TSP的方法,通过定义城市间的距离矩阵,调用库函数计算最优路径,并打印结果。此方法适用于小规模问题,对于大规模或特定需求,需深入了解算法原理及定制策略。
39 15
|
28天前
|
Python
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
35 6
|
1月前
|
机器学习/深度学习 人工智能 算法
强化学习在游戏AI中的应用,从基本原理、优势、应用场景到具体实现方法,以及Python在其中的作用
本文探讨了强化学习在游戏AI中的应用,从基本原理、优势、应用场景到具体实现方法,以及Python在其中的作用,通过案例分析展示了其潜力,并讨论了面临的挑战及未来发展趋势。强化学习正为游戏AI带来新的可能性。
90 4
|
1月前
|
Python
Python编程中的魔法方法(Magic Methods)
【10月更文挑战第40天】在Python的世界中,魔法方法就像是隐藏在代码背后的神秘力量。它们通常以双下划线开头和结尾,比如 `__init__` 或 `__str__`。这些方法定义了对象的行为,当特定操作发生时自动调用。本文将揭开这些魔法方法的面纱,通过实际例子展示如何利用它们来增强你的类功能。
18 1