3种字符串格式化工具的简单介绍
python2.5版本之前,我们使用的是老式字符串格式化输出%s。
从python3.0版本开始起(python2.6同期发布),Python中同时支持两个版本的格式化,多出来的一个新版本就是利用format()函数,进行格式化输出。
但是python3.6版本后,又引入了一种新的字符串格式化方式f-string。从%s格式化到format格式化再到f-string格式化,格式化的方式越来越直观,f-string的效率也较前两个高一些,使用起来也比前两个更简单一些。
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)
结果如下:
② %格式化
此种方式只支持固定形式的格式化填充,给的顺序和填充顺序完全一致。
a = "四大天王:%s、%s、%s、%s" % ("刘德华","郭富城","张学友","黎明") print(a)
结果如下:
③ 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)
结果如下:
④ f-string格式化
此种方式的填充,用起来更加随意,直接在{}中输入变量即可,极其方便,我们用一个简单的案例看看。
# 直接在{}中输入变量即可,位置随意放 x1 = "刘德华" x2 = "郭富城" x3 = "张学友" x4 = "黎明" c = f"四大天王:{x1}、{x3}、{x2}、{x4}" print(c)
结果如下:
3)填充功能对比
首先我们要知道填充的概念是什么,只有知道了它的概念,才能够灵活运用。
概念:当指定了字符串最终的长度,但是现有的字符串没有那么长,那么我们就用某种字符(填充字符)来填满至这个长度,这就是“填充”。
① %格式化
格式:"%10s" % (“字符串”),使用前仔细观察书写格式;
含义:上述10代表字符串的填充长度。如果字符串的长度,大于填充长度,填充长度无效;如果字符串的长度,小于填充长度,则会将字符串长度填充至指定的填充长度;
注意:此种填充,默认是在字符串左侧填充;
a = "%s" % ("黄同学") print(a,len(a)) b = "%10s" % ("黄同学") print(b,len(b)) c = "%10s" % ("黄同学,我早上吃了一碗热干面") print(c,len(c))
结果如下:
② 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))
结果如下:
③ 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))
结果如下:
3)对齐功能对比
首先我们要知道填充的概念是什么,只有知道了它的概念,才能够灵活运用。
概念:"对齐"要与"填充"一起使用,才会显得有意义。当我们进行填充的时候,我们可以选择只在字符串左侧填充,也可以选择只在字符串右侧填充,还可以选择在字符串两侧填充(字符串居中显示的填充方式);
① %s:实现对齐功能,只有左对齐和右对齐;
# 左填充 a = '%10s' % ('黄同学') print(a,len(a)) # 右填充 b = '%-10s' % ('黄同学') print(b,len(b))
结果如下:
② format():实现对齐功能,不仅有左对齐和右对齐,还有居中对齐;
# 左填充 a = '{:>10}'.format('黄同学') print(a,len(a)) # 右填充 b = '{:<10}'.format('黄同学') print(b,len(b)) # 居中填充 c = '{:^10}'.format('黄同学') print(c,len(c))
结果如下:
③ 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))
结果如下: