字串的格式化輸出
一、定義:所謂字元申格式化就是要先制定個模板。 在這個模板中某個或者某幾個地方留出空位來,然後在那些空位填上字串,井且在顯示結果中,字特串要符合空位置所設定的約束條件。
二、格式化輸出的方式:%、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