旧式字符串格式化
因为 str.format()
是比较新的函数, 大多数的 Python 代码仍然使用 % 操作符。但是因为这种旧式的格式化最终会从该语言中移除, 应该更多的使用 str.format()
.
Python 使用 %
格式化字符串,常用占位符如下表所示:
占位符 |
描述 |
%s |
格式化字符串 |
%d |
格式化整数 |
%f |
格式化浮点数(默认保留6位小数) |
实例:
1 2 3 4
| print('Hello %s' %'Python') Hello Python
print ("我叫 %s 今年 %d 岁!" % ('小明', 20))
|
format() 方法格式化:
1
| print('{0} {1}'.format('Hello', 'Python'))
|
f-string
f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。
1 2
| name = 'Python' f'Hello {name}'
|
实例
%2d
是将数字按宽度为2,采用右对齐方式输出,若数据位数不到2位,则左边补空格。
%02d
,和 %2d
一样,只是左边补0。
%-2d
将数字按宽度为2,采用左对齐方式输出,若数据位数不到2位,则右边补空格。
%.2d
输出整形时最少输出2位,如不够前面以0占位。如输出2时变成02,200时只输出200;输出浮点型时( %.2f
)小数点后强制2位输出。
%05.2f
输出字符最少5为,不足5位,需要补0,小数点后强制2位输出。
比如:
1 2 3 4 5 6 7 8 9 10 11
| import math
num = 1 print("%d" % (num))结果为: (1) print("%2d" % (num))结果为: ( 1) print("%02d" % (num))结果为: (01) print("%-2d" % (num))结果为: (1 ) print("%.2d" % (num))结果为: (01) print("%.2d" % (200))结果为: (200) print('常量 PI 的值近似为:%06.3f。' % math.pi) 常量 PI 的值近似为:03.142。
|
:2d
1 2
| for x in range(1, 11): print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
|
:2d
表示两个宽度的10进制数显示。
:3d
表示三个宽度的10进制数显示。
:4d
表示四个宽度的10进制数显示。
双冒号(::)
1 2 3 4 5 6 7
| a = '1234567890'
print(a[::2])
print(a[::3])
|
输出:
整数的输出
1 2 3
| print('%o' % 20) print('%d' % 20) print('%x' % 24)
|
浮点数输出
%f
保留小数点后面六位有效数字
%e
保留小数点后面六位有效数字
%g
在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法。
1 2 3 4 5 6 7
| print('%f' % 1.11) print('%.1f' % 1.11) print('%e' % 1.11) print('%.3e' % 1.11) print('%g' % 1111.1111) print('%.7g' % 1111.1111) print('%.2g' % 1111.1111)
|
字符串输出
1 2 3 4 5 6
| print('%s' % 'hello world') print('%20s' % 'hello world') print('%-20s' % 'hello world') print('%.2s' % 'hello world') print('%10.2s' % 'hello world') print('%-10.2s' % 'hello world')
|
对齐方式的取值:
<
:左对齐
>
:右对齐
^
:居中
=
:在正负号(如果有的话)和数字之间填充,该对齐选项仅对数字类型有效。它可以输出类似 +0000120 这样的字符串。
1 2 3 4 5 6 7 8
| print("|",format("RUNOOB","*>30"),"|") | ************************RUNOOB |
print("|",format("RUNOOB","*^30"),"|") | ************RUNOOB************ |
print("|",format("RUNOOB","*<30"),"|") | RUNOOB************************ |
|