天天看點

format常見用法format填充字元串文本的填充與對齊格式轉換

format常見用法包括格式化填充字元,文本的填充與對齊,格式轉換等.

format填充字元串

通過位置進行填充

print("""
注意你的{},他會變成你的{};
注意你的{},他會變成你的{};
注意你的{},他會變成你的{};
注意你的{},他會變成你的{};
注意你的{},他會變成你的{}
""".format("思想","言語","言語","行動","行動","習慣","習慣","性格","性格","命運"))
           

用來填充的字元和需要填充的位置一一對應,如果填充的内容比較多,而且有重複,可以把填充的内容指派給變量,重複利用

指派變量

a = "思想"
b = "言語"
c = "行動"
d = "習慣"
e = "性格"
f = "命運"
           

變量與需要填充的位置一一對應進行填充,不需要重複寫用來填充的字元了,和上邊填充方法相同的一點是位置與變量的數量是相同的

print("""
注意你的{},他會變成你的{};
注意你的{},他會變成你的{};
注意你的{},他會變成你的{};
注意你的{},他會變成你的{};
注意你的{},他會變成你的{}
""".format(a,b,b,c,c,d,d,e,e,f))
           

輸出結果:

注意你的思想,他會變成你的言語;
注意你的言語,他會變成你的行動;
注意你的行動,他會變成你的習慣;
注意你的習慣,他會變成你的性格;
注意你的性格,他會變成你的命運
           

還有另一種方法來确定變量與位置的關系

print("""
注意你的{0},他會變成你的{1};
注意你的{1},他會變成你的{2};
注意你的{2},他會變成你的{3};
注意你的{3},他會變成你的{4};
注意你的{4},他會變成你的{5}
""".format(a,b,c,d,e,f))  
           

用來進行的填充去重,把位置資訊填入花括号中,此時花括号中的位置資訊指向的是format後邊圓括号中的變量資訊,與前兩種填充方法不同的一點是位置數量與用來填充的變量數量不一緻了,因為有重複利用的變量.

雖然有不同,但是以上三種方法都是通過位置資訊來進行填充的,隻是有的是在空缺的地方進行位置限制,有的是在format後邊進行位置限制,隻要對位置資訊比較清楚,都可以進行正确的填充.

通過關鍵字參數進行填充

print("""
注意你的{A},他會變成你的{B};
注意你的{B},他會變成你的{C};
注意你的{C},他會變成你的{D};
注意你的{D},他會變成你的{E};
注意你的{E},他會變成你的{F}
""".format(A=a,B=b,C=c,D=d,E=e,F=f))  
           

傳回結果:

注意你的思想,他會變成你的言語;
注意你的言語,他會變成你的行動;
注意你的行動,他會變成你的習慣;
注意你的習慣,他會變成你的性格;
注意你的性格,他會變成你的命運
           

通過關鍵字參數進行控制,和位置就沒有多大關系了,在所有空缺都用關鍵字參數進行控制填充的時候,format後邊先寫哪一個位置的對應關系都沒有關系,這樣也可以:

print("""
注意你的{A},他會變成你的{B};
注意你的{B},他會變成你的{C};
注意你的{C},他會變成你的{D};
注意你的{D},他會變成你的{E};
注意你的{E},他會變成你的{F}
""".format(F=f,A=a,D=d,B=b,C=c))  
           

打亂關鍵字參數順序也是可以傳回正确結果的.

還可以通過清單進行填充

list1 = ["思想","言語","行動","習慣","性格","命運"]
print("""
注意你的{0[0]},他會變成你的{0[1]};
注意你的{0[1]},他會變成你的{0[2]};
注意你的{0[2]},他會變成你的{0[3]};
注意你的{0[3]},他會變成你的{0[4]};
注意你的{0[4]},他會變成你的{0[5]}.
""".format(list1))
           

傳回結果:

注意你的思想,他會變成你的言語;
注意你的言語,他會變成你的行動;
注意你的行動,他會變成你的習慣;
注意你的習慣,他會變成你的性格;
注意你的性格,他會變成你的命運.
           

需要注意的是{0[0]},{0[1]}…{0[5]}這些花括号裡前邊的0不能直接寫成list1,如果寫成list1會報錯,因為寫了list1就等于是直接比對到需要填充的字元了,根本用不到後邊的format方法.是以,可以寫0,也可以寫其他随便的變量名字(比如說這個被随便取的變量名字是a),然後在format後邊的括号了指派剛剛随便寫的變量名字給list1(.format(a=list1))就可以了.

通過字典進行填充

#通過字典填充
dic1 = {"a":"思想","b":"言語","c":"行動","d":"習慣","e":"性格","f":"命運"}
print("""
注意你的{names[a]},他會變成你的{names[b]};
注意你的{names[b]},他會變成你的{names[c]};
注意你的{names[c]},他會變成你的{names[d]};
注意你的{names[d]},他會變成你的{names[e]};
注意你的{names[e]},他會變成你的{names[f]}.
""".format(names=dic1))
           

傳回結果:

注意你的思想,他會變成你的言語;
注意你的言語,他會變成你的行動;
注意你的行動,他會變成你的習慣;
注意你的習慣,他會變成你的性格;
注意你的性格,他會變成你的命運.
           

需要注意的是用通路字典的鍵(key)的時候,是不需要加引号的.

實際上,在字元串填充涉及到的知識點,不管是所謂的位置填充還是關鍵字填充,或者是清單填充或者字典填充,最重要的就是要清楚要填補的位置與要填充的字元的關系,對應的關系是不是對,當然除了涉及到位置和關鍵字參數,還涉及到清單的切片以及字典的通路,都是比較基礎的内容

文本的填充與對齊

填充和對齊經常一起使用,這裡的填充不是指前邊的字元串填充,而是在對齊過程中,字元個數不夠時用什麼來填充.

^ < >這三個符号分别表示居中、左對齊、右對齊,符号後邊跟着數字指字元的整體長度

:号後面帶填充的字元,隻能是一個字元,不指定的話預設是用空格填充

print('{:^14}'.format('江南燕'))  #居中,整個字元串的長度為14,不指定填充字元,用空格填充
print('{:>14}'.format('江南燕'))  #右對齊,用空格填充
print('{:<14}'.format('江南燕'))  #左對齊,用空格填充
print('{:*<14}'.format('江南燕')) #左對齊,用*填充
print('{:&>14}'.format('江南燕')) #右對齊,用&填充
           

傳回結果:

江南燕      
           江南燕
江南燕           
江南燕***********
&&&&&&&&&&&江南燕
           

格式轉換

關于格式轉換,網上有很多大神總結了特别全面的知識點,這裡不全部羅列了,隻拿最常用的做個例子展示一下怎麼用吧.

'{:.2f}'.format(3.1415926) #保留兩位小數

傳回結果:

'3.14'

如果想保留幾位小數,就把f前邊的2換成幾就可以了

'{:.0f}'.format(3.1415926) #不保留小數位數

傳回結果:```3``

'{:+.2f}'.format(3.1415926) #保留帶符号的兩位小數

傳回結果:

'+3.14'

'{:+.2f}'.format(-3.1415926) #不管保留的符号是正号還是負号,都是在冒号和點之間加"+"

傳回結果:

'-3.14'

'{:.2%}'.format(0.25) #百分位數保留小數位數,想保留幾位,百分号前邊就寫數字幾

傳回結果:

'25.00%'

'{:>10d}'.format(100) #右對齊,10表示帶寬,在這裡也是字元個數

傳回結果:

' 100'

'{:0>10d}'.format(100) #用0填充補齊的位置 (右對齊)

傳回結果:

'0000000100'

對齊和填充的規則和前邊文本與填充的規則和效果差不多,可以自行嘗試.

金額的千位分隔符

'{:,}'.format(1234567890) #冒号後邊加逗号,形成千位分隔符

傳回結果:

'1,234,567,890'

繼續閱讀