字符串的格式化输出
一、定义:所谓字符申格式化就是要先制定个模板。 在这个模板中某个或者某几个地方留出空位来,然后在那些空位填上字符串,井且在显示结果中,字特串要符合空位置所设定的约束条件。
二、格式化输出的方式:%、str.format、f{str}
1、%号格式化输出
Brith:%号格式化字符串的方式从Python诞生之初就已经存在,时至今日,python官方也并未弃用%号,但也并不推荐这种格式化方式。
(1)用%s占位,但格式的字符串(即%s)与被格式化的字符串(即传入的值)必须按照位置一一对应
例1:
# a = "大金块"
# b = "金少"
# print("%s说那个%s好大好亮"%(b,a))
# print("%s说%s好高好帅"%(a,b))
例2:
# name_str = "jack"
# age_str = 18
# print("我的名字是%s,我的年龄为%s"%(name_str,age_str))
(2)可以通过字典方式格式化,既打破了位置带来的限制与困扰,又能减少代码行数,使代码看起来更整洁
例1:
# dic = {"a":"大金块","b":"金少"}
# print("%(b)s说那个%(a)s好大好亮"%(dic))
# print("%(a)s说%(b)s好高好帅"%(dic))
例2:
dic = {"name_str":"jack","age_str":"18"}
print("我的名字是%(name_str)s,我的年龄是%(age_str)s"%(dic))
2、 str.format
Birth:该format方法是在Python 2.6中引入的,是字符串类型的内置方法。因为str.format的方式在性能和使用的灵活性上都比%号更胜一筹,所以推荐使用。
(1)用{}占位,传入参数时需按位置一一对应
例:
# name = "任金中"
# ginder = "男"
# age = "19"
# stature = "173cm"
# appearance = "帅气"
# print("我是{},性别{},年龄{},身高{},外表比较{}".format(name,ginder,age,stature,appearance))
(2)通过字典方式格式化
例:
# dic = {"name":"任金中","ginder":"男","age":"19","stature":"173cm","appearance":"帅气"}
# print("我是{name},性别{ginder},年龄{age},身高{stature},外表比较{appearance}".format(**dic))
(3)通过关键字参数格式化
例:
#print("我是{name},性别{ginder},年龄{age},身高{stature},外表比较{appearance}".format(name = "任金中",ginder = "男",age = "19",stature = "173cm",appearance = "帅气"))
(4)使用索引取对应位置的值
例:
# print('{0}{0}{1}{0}'.format('x','y'))
# print("{2}{0}{1}{0}".format("x","y","z"))、
(5)格式化填充输出
例:
print('{0:*<10}'.format('开始执行')) #开始执行****** print('{0:*>10}'.format('开始执行')) #******开始执行 print('{0:*^10}'.format('开始执行')) #***开始执行***
冒号(:)前面空白或者是0,冒号(:)后边带填充字符(*),只能是一个字符,不指定的话默认是空格填充
^/</>分别是居中、左对齐、右对齐,后面带宽度(字符数量)
(6)精度与进制
print('{salary:.3f}'.format(salary=1232132.12351)) #精确到小数点后3位,四舍五入,结果为:1232132.124 print('{0:b}'.format(123)) # 转成二进制,结果为:1111011 print('{0:o}'.format(9))
# 转成八进制,结果为:11 print('{0:x}'.format(15)) # 转成十六进制,结果为:f print('{0:,}'.format(99812939393931)) # 千分位格式化(三个数标一次),结果为:99,812,939,393,931
3、 f-string
Birth:str.format() 比 %格式化高级了一些,但是它还是有自己的缺陷。当需要传入的字符串过多时,仍然会显得非常冗长。
于是在Python 3.6中引入 了f-strings,不仅比str.format更简洁,性能上也更胜一筹。
PS:f-string是以f或F开头的字符串,核心在于字符串中[]的运用
1.{}中可以是变量名
例:
name = "任金中" ginder = "男" age = "19" stature = "173cm" appearance = "帅气" print(f"我叫{name},今年{age},身高是{stature},长得比较{appearance}")
2.{}中可以是表达式
例:
a = 5 b = 50 print(f"c是{a*b}") #c是250