format是python2.6新增的格式化字符串的方法,相对于老版的%格式方法,它有很多优点。
1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型
2.单个参数可以多次输出,参数顺序可以不相同
3.填充方式十分灵活,对齐方式十分强大
4.官方推荐用的方式,%方式将会在后面的版本被淘汰
位置填充
(1)通过位置来填充字符串
foramt会把参数按位置顺序来填充到字符串中,第一个参数是0,然后1 ……
也可以不输入数字,这样也会按顺序来填充
同一个参数可以填充多次,这个是format比%先进的地方
q1 = '古代私塾教育的四书五经分别是指:{0} 、{1} 、{2} 、{3} 和{4} 、{5} 、{6}、{7}、{8}。' print(q1.format('《大学》',' 《论语》','《孟子》','《中庸》','《周易》','《诗经》','《尚书》','《礼记》','《春秋》')) q2 = '古代私塾教育的四书五经分别是指:{} 、{} 、{} 、{} 和{} 、{} 、{}、{}、{}。' print(q2.format('《大学》',' 《论语》','《孟子》','《中庸》','《周易》','《诗经》','《尚书》','《礼记》','《春秋》')) q3 = '屡{0}屡{1},屡{1}屡{0}' print(q3.format('战','败'))
运行结果:
古代私塾教育的四书五经分别是指:《大学》 、 《论语》 、《孟子》 、《中庸》 和《周易》 、《诗经》 、《尚书》、《礼记》、《春秋》。
古代私塾教育的四书五经分别是指:《大学》 、 《论语》 、《孟子》 、《中庸》 和《周易》 、《诗经》 、《尚书》、《礼记》、《春秋》。
屡战屡败,屡败屡战
通过Key来填充
q4 = '小时不识{name1},呼作{name2}。'
print(q4.format(name1='月',name2='白玉盘'))
运行结果:
小时不识月,呼作白玉盘。
通过下标来填充
q5 = '此{names[0]}只应{names[1]}上有,{names[2]}能得几回闻。'
names = ['曲','天','人间']
print(q5.format(names=names))
运行结果:
此曲只应天上有,人间能得几回闻。
通过字典的Key
q6 = '安得{names[name1]}千万间,大庇{names[name2]}天下俱欢颜。'
names = {'name1':'广厦','name2':'寒士'}
print(q6.format(names=names))
运行结果:
安得广厦千万间,大庇寒士天下俱欢颜。
通过对象的属性
q7 = '{names.name1}生{names.name2},春来发几枝?'
class names:
name1 = '红豆'
name2 = '南国'
print(q7.format(names=names))
运行结果:
红豆生南国,春来发几枝?
使用魔法参数
q8 = '昔我{}矣,杨柳{w1}。今我来{},雨雪{w2}。'
args = ['往','思']
kwargs = {'w1':'依依','w2':'霏霏'}
print(q8.format(*args,**kwargs))
运行结果:
昔我往矣,杨柳依依。今我来思,雨雪霏霏。
用逗号做金额的千位分隔符
print('{:,}'.format(5463217788))
运行结果:
5,463,217,788
限定浮点值精确度
print('{:.2f}'.format(3.1415926))
运行结果:
3.14
科学计数法转化为浮点型数据
print('{:.5f}'.format(1.2e-4))
运行结果:
0.00012
浮点型数据转化科学计数法
print('{:.2e}'.format(134432255888))
运行结果:
1.34e+11
十进制数自动转换成十六进制
print("100的十六进制:{:#x}".format(100))
运行结果:
100的十六进制:0x64
十进制数自动转换成八进制
print("100的八进制:{:#o}".format(100))
运行结果:
100的八进制:0o144
十进制数自动转换成二进制
print("100的二进制:{:#b}".format(100))
运行结果:
100的二进制:0b1100100
显示百分比
默认显示小数点后 6 位
print("0.01的百分比表示:{:.0%}".format(0.01))
运行结果:
0.01的百分比表示:1%
import datetime
n = datetime.datetime.now()
print('{:%a %Y-%m-%d %H:%M:%S}'.format(n))
运行结果:
Sat 2020-08-15 19:53:12
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
print('{:>8}'.format('python'))
print('{:*>8}'.format('python'))
print('{:*<8}'.format('python'))
print('{:*^8}'.format('python'))
运行结果:
**python
python**
*python*
{}内嵌{}
print('hello{0:>{1}} '.format('Jet',10))
运行结果:
hello Jet
转义{和}符号
print('{ { hello {0} }}'.format('Kevin'))
运行结果:
{ hello Kevin }
format作为函数
f = '神州{}号'.format
print(f(1))
print(f(2))
运行结果:
神州1号
神州2号
叹号的用法
!后面可以加s r a 分别对应str() repr() ascii() 作用是在填充前先用对应的函数来处理参数
repr() 函数将对象转化为供解释器读取的形式。
str() 函数将对象转化为适于人阅读的形式。
ascii() 转义非 ASCII 字符
print('{!s}国'.format('中'))
print('{!a}国'.format('中'))
print('{!r}国'.format('中'))
运行结果:
中国
'\u4e2d'国
'中'国