1. 说明
1.1 符号说明
- %字符:标记转换说明符的开始
- 最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出
- 点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将从元组中读出
1.2 格式化输出进制
格式 | 描述 |
%% | 百分号标记 |
%c | 字符及其ASCII码 |
%s | 字符串 |
%d | 有符号整数(十进制) |
%u | 无符号整数(十进制) |
%o | 无符号整数(八进制) |
%x | 无符号整数(十六进制) |
%X | 无符号整数(十六进制大写字符) |
%e | 浮点数字(科学计数法) |
%E | 浮点数字(科学计数法,用E代替e) |
%f | 浮点数字(用小数点符号) |
%g | 浮点数字(根据值的大小采用%e或%f) |
%G | 浮点数字(类似于%g) |
%p | 指针(用十六进制打印值的内存地址) |
%n | 存储输出字符的数量放进参数列表的下一个变量中 |
2. 字符串类print使用
string = 'hello'
# %s打印时结果是hello
print("string=%s" %string) # output: string=hello
# %2s意思是字符串长度为2,当原字符串的长度超过2时,
# 按原长度打印,所以%2s的打印结果还是hello
print ("string=%2s" %string ) # output: string=hello
# %7s意思是字符串长度为7,当原字符串的长度小于7时,
# 在原字符串左侧补空格
print ("string=%7s" %string) # output: string= hello
# %-7s意思是字符串长度为7,当原字符串的长度小于7时,
# 在原字符串右侧补空
print ("string=%-7s" %string) # output: string=hello !
# %.2s意思是截取字符串的前2个字符,所以%.2s的打印结果是he
print ("string=%.2s" % string) # output: string=he
# 另一种写法,*代表的数字是小括号里的数字
print ("string=%.*s" % (3,string)) # output: string=hel
# %.7s意思是截取字符串的前7个字符,
# 当原字符串长度小于7时,即是字符串本身,
print ("string=%.7s" % string) # output: string=hello
# %a.bs这种格式是上面两种格式的综合,
# 首先根据小数点后面的数b截取字符串,
# 当截取的字符串长度小于a时,还需要在其左侧补空格
print ("string=%7.2s" % string) # output: string= he
print ("string=%2.7s" % string) # output: string=hello
print ("string=%10.7s" % string) # output: string= hello
# 还可以用%*.*s来表示精度,
# 两个*的值分别在后面小括号的前两位数值指定
print ("string=%*.*s" % (7,2,string)) # output: string= he
3. 整型int类print使用
num=14
# %d打印时结果是14
print ("num=%d" %num ) # output: num=14
# %1d意思是打印结果为1位整数,当整数的位数超过1位时,
# 按整数原值打印,所以%1d的打印结果还是14
print ("num=%1d" %num ) # output: num=14
# %3d意思是打印结果为3位整数,当整数的位数不够3位时,
# 在整数左侧补空格,所以%3d的打印结果是 14
print ("num=%3d" %num ) # output: num= 14
# %-3d意思是打印结果为3位整数,
# 当整数的位数不够3位时,在整数右侧补空格
print ("num=%-3d" %num ) # output: num=14_
# %05d意思是打印结果为5位整数,
# 当整数的位数不够5位时,在整数左侧补0
print ("num=%05d" %num ) # output: num=00014
# %.3d小数点后面的3意思是打印结果为3位整数,
# 当整数的位数不够3位时,在整数左侧补0
print ("num=%.3d" %num ) # output: num=014
# %.0003d小数点后面的0003和3一样,都表示3,意思是打印结果为3位整数,
# 当整数的位数不够3位时,在整数左侧补0
print ("num=%.0003d" %num ) # output: num=014
# %5.3d是两种补齐方式的综合,当整数的位数不够3时,
# 先在左侧补0,还是不够5位时,再在左侧补空格,
# 规则就是补0优先,最终的长度选数值较大的那个
print ("num=%5.3d" %num ) # output: num= 014
# %05.3d是两种补齐方式的综合,当整数的位数不够3时,
# 先在左侧补0,还是不够5位时,
# 由于是05,再在左侧补0,最终的长度选数值较大的那个
print ("num=%05.3d" %num ) # output: num=00014
# 还可以用%*.*d来表示精度,两个*的值分别在后面小括号的前两位数值指定
print ("num=%*.*d" % (5,4,num)) # output: num= 0014
4. 浮点数float
import math
# 正常输出,%f表示浮点数格式控制
print 'PI = %f' % math.pi
# PI = 3.141593
# 宽度 = 10, 精度 = 3, 左对齐
print 'PI = %10.3fxxx' % math.pi
# PI = 3.142xxx
# 宽度 = 10, 精度 = 3, 右对齐
print 'PI = %-10.3fxxx' % math.pi
# PI = 3.142 xxx
# 使用0前面填充字符串
print 'PI = %06d' % int(math.pi)
# PI = 000003
5.Python format()格式控制
5.1 万能的%r
# 它可以将后面给的参数原样打印出来,带有类型信息
formatter = '%r %r %r %r'
print(formatter % (1, 2, 3, 4))
# output 1 2 3 4
print(formatter % ('one', 'two', 'three', 'four'))
# output 'one' 'two' 'three' 'four'
print(formatter % (True, False, False, True))
# output True False False True
print(formatter % (formatter, formatter, formatter, formatter))
# output '%r %r %r %r' '%r %r %r %r' '%r %r %r %r' '%r %r %r %r'
print(formatter % ("I thing.","had right.","But it.","said good.") )
# output 'I thing.' 'had right.' 'But it.' 'said good.'
5.2 通过位置标号
# {0}表示第一个元素, {1}表示第二个元素, {2}表示第三个元素,以此类推。。。
a = 'Ace'
b = 'hello'
print("{1}, my name is {0}".format(a, b))
# output hello, my name is Ace
5.3 通过关键词参数
name = "Ace"
age = 26
print("{myname}'s age is {myage}".format(myname=name, myage=age))
# output Ace's age is 26
5.4 通过属性和下标
person = ["Ace", 26]
personB = ["bce", 29]
print("{0[0]}'s age is {1[1]}".format(person, personB))
# output Ace's age is 29
print("{people[0]}'s age is {people[1]}".format(people=person))
# output Ace's age is 26
# 字典字符串
person = {'Ace': 23}
print("{myname}'s age is {people[Ace]}".format(myname=name,people=person))
# output Ace's age is 23
5.5 格式化限定符和填充与对齐
# “ ^ ”、“ < ”、“ > ”分别代表居中,左对齐,右对齐,后面带宽度
a = 123.456789
haha = 'haha!!!'
print("{0:0.3f}, *{1:<14}*".format(a, haha))
print("{0:0.3f}, *{1:>14}*".format(a, haha))
print("{0:0.3f}, *{1:^14}*".format(a, haha))
print("{0:0.3f}, *{1:}*".format(a, haha))
输出:
# 123.457, *haha!!! *
# 123.457, * haha!!!*
# 123.457, * haha!!! *
# 123.457, *haha!!!*