Python格式化字符串的4中方式
一:%号
%号格式化字符串的方式从Python诞生之初就已经存在,时至今日,python官方也并未弃用%号,但也并不推荐这种格式化方式。
该format
方法是在Python 2.6中引入的,是字符串类型的内置方法。因为str.format的方式在性能和使用的灵活性上都比%号更胜一筹,所以推荐使用
2.1 使用位置参数
2.2 使用索引
2.3 使用关键字参数or字典
2.4 填充与格式化
2.5 精度与进制
三:f-Strings
str.format() 比 %格式化高级了一些,但是它还是有自己的缺陷。当需要传入的字符串过多时,仍然会显得非常冗长。与在Python 3.6中引入 了f-strings,不仅比str.format更简洁,性能上也更胜一筹
f-
string是以f或F开头的字符串, 核心在于字符串中符号{}的使用
3.1 {}中可以是变量名
3.2 {}中可以是表达式
3.3 在类中的使用
3.3 多行f-Stings
3.4 引号的嵌套
3.5注意
3.6 括号的处理
基于3.5我们得知,不能在{}内出现反斜杠\,所以,当我们的输出的结果中需要包含{}时,下面的做法就是错误的
类似于输出%号的做法
若想输出{},那么需要在原有的基础上再套一层,如下
性能对比=>f_Stings性能最高
##四:标准库模板
从Python 2.4起,Python标准库string引入了Template也可以用来格式化字符串,所以说,与前三种方式的一个显著区别就是:Template并属于python语言的核心语法特征,使用方式如下
另外一个不同的地方是这个模板字符串不支持类似str.format那样的进制转换,需要我们自己处理
使用模板字符串Template的最佳的时机就是当你的程序需要处理由用户提供的输入内容时。模板字符串是最保险的选择,因为可以降低复杂性。
其他一些复杂的字符串格式化技巧的可能会给你的程序带来安全漏洞
五:总结四种方式的应用场景
1、如果格式化的字符串是由用户输入的,那么基于安全性考虑,推荐使用Template
2、如果使用的python3.6+版本的解释器,推荐使用f-Stings
3、如果要兼容python2.x版本的python解释器,推荐使用str.format
4、如果不是测试的代码,不推荐使用%