格式化字符串
,顾名思义就是将字符串进行格式化,更方便的被我们阅读和使用。那么如何将结果进行格式化,就是我们需要探讨、研究的问题。
Python提供了3种格式化的方式,分别是旧式字符串格式化方法、format方法、格式化字符串字面值方法。接下来我们针对每一种方法分别进行探讨、研究。
一、旧式字符串格式化方法
在旧式字符串格式化方法中,我们使用%进行字符串的格式化,形如'string' % values
,string中存在多个需要被赋值的%s、%d、%f等占位符,values便是负责给占位符进行赋值的值,通过values前的%传入,传入值时要一一对应,不但传值的顺序、个数要对应,而且%s要对应字符串、%d要对应整型、%f要对应浮点型,同时多个值进行传入时要将values使用小括号**()
**括起来。举个例子:
age = 20
str1 = '小明今年%d岁了' % age
print(str1)
name = '小红'
str2 = '%s今年%d岁了' % (name, age)
print(str2)
上方例子中,我们没有提及%f,这里将%f 单独拿出来讲解:%f除了能代表一个浮点数之外,还可以起到四舍五入保留小数位数的作用。%f默认保留六位小数,如果想自定义小数位数,应该使用%.Nf
(注:N为大于等于0的正整数)。
pi = 3.1415
str1 = '圆周率为:%f' % pi
str2 = '圆周率为:%.1f' % pi
str3 = '圆周率为:%.3f' % pi
print(str1, str2, str3)
二、字符串 format 方法
format方法把旧版的%替换为{}来实现格式化字符串。默认情况下,字符串中有几个位置需要传入数据,你就可以在字符串中写入几个{}
,同时在format方法中按照顺序传入对应数量的数据即可。
name = '小明'
age = 18
edu = '清华大学'
str1 = '{}岁的{}考上了{}'.format(age, name, edu)
但是有时候,一个数据可能需要重复传入,为了避免数据重复传入的繁琐,format还提供了一种更高级的写法。
name = '小明'
age = 18
edu = '清华大学'
str2 = '{0}岁的{1}考上了{2},{1}的爸爸妈妈非常高兴'.format(age, name, edu)
print(str2)
在这种写法中,大家可以看到,我在{}中写入了索引数字(索引数字即每个元素的位置,format 中传入的数据按照索引从0开始数),如果某个数据需要重复传入,我们只需要根据format中传入数据的索引对应着写入{}中即可。
三、格式化字符串字面值(f-字符串)
在字符串前面添加前缀f
或F
,在字符串中将需要修改值的位置使用{}
代替,将值或者产生值的表达式放入{}中,即可实现和format同样的效果。
name = '小明'
age = 18
edu = '清华大学'
str1 = f'{age}岁的{name}考上了{edu},{name}的爸爸妈妈非常高兴'
print(str1)
四、总结
个人觉得f-字符串会比旧式字符串格式化方法和format函数好用一些,当遇到变量比较多、字符串传值比较多的时候,只需要关注变量名是否填写正确,而不用关注顺序和索引,相对来说不容易犯错。