1. 传统的格式化字符串
传统的格式化字符串指的是使用%d, %f等占位符的方式,类似于java或C语言中的标注输出函数的功能
name = 'tom'
age = 20
weight = 74.78
# 在字符串内使用占位符%d %s %f等指定格式, 在字符串后面使用%向格式化字符串传递参数
s = 'hello %s, your age is %d, and your weight is %f kg' %(name, age, weight)
print(s)
其中比较常用的占位符有
- %s 字符串格式
- %d 十进制整数格式
- %f 浮点数格式
- %e 科学计数法格式,其中的字母e使用小写格式
- %E 科学计数法格式,其中的字母e使用大写格式
- %o 八进制格式
- %x 十六进制格式,其中的字母使用小写格式
- %X 十六进制格式,其中的字母使用大写格式
在%和后面的字母中间还可以插入辅助指令用于更进一步设置字符串的格式
其中比较常用的几个有
- + 整数前面显示+
- - 左对齐输出
- 0 数字宽度不足的时候,填充0,而不是空格
- m.n 指定浮点数的宽度和小数点后面的位数
- (key) 指定字典里的键
- %% 输出一个普通的字符%
2. f-string格式化字符串
f-string, 格式化字符串常量(formatted string literals), 是Python3.6新引入的一种字符串格式化方法. 其目的是使格式化字符串的操作更加简便。f-string在形式上是以 f 或 F 修饰符引领的字符串(f'xxx'或 F'xxx'),以大括号 {} 标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式
f-string在功能方面不逊于传统的%-formatting语句和str.format()函数, 同时性能又优于二者, 且使用起来也更加简洁明了, 因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化.
同传统的格式化字符串方法一样,可以指定替换内容的宽度(字符数目), 宽度不足时, 默认补空格
下面的例子中使用了 < > ^ 三个字符表示宽度不足时的对齐方式, 分别表示左对齐, 右对齐和居中对齐
In [2]: name = 'tom'
In [3]: age = 20
In [4]: pi = 3.14159
In [5]: f'hello{name}'
Out[5]: 'hellotom'
In [6]: f'hello{name:5}'
Out[6]: 'hellotom '
In [7]: f'hello{name:>5}'
Out[7]: 'hello tom'
In [8]: f'hello{name:<5}'
Out[8]: 'hellotom '
In [9]: f'hello{name:^5}'
Out[9]: 'hello tom '
对于数字类型, 可以在对齐方式字符前指定宽度不足时, 要补的字符, 如下图所示
In [10]: f'your age is {age:^5}'
Out[10]: 'your age is 20 '
In [11]: f'your age is {age:>5}'
Out[11]: 'your age is 20'
In [12]: f'your age is {age:0>5}'
Out[12]: 'your age is 00020'
In [13]: f'your age is {age:2>5}'
Out[13]: 'your age is 22220'
In [14]: f'your age is {age:#>5}'
Out[14]: 'your age is ###20'
In [15]: f'your age is {age:#<5}'
Out[15]: 'your age is 20###'
3. string的format()方法