字符串的格式化

字符串的格式化種類

一、%:功能有限。比較古老
二、str.format():功能比較多,技術比較新(有可能替代掉%的趨勢)
 
如圖:

 

 格式化輸出

實例1:獨立元素格式化:(*args)
 1 #方法1:
 2 s1 = "i am {0},age {1}".format('alex',19)
 3 print('s1 -->',s1)
 4 
 5 
 6 #方法2:
 7 s2 = "i am {0},age {1}".format(*['alex',19])
 8 print('s2 -->',s2)
 9 
10 顯示結果:
11 s1 --> i am alex,age 19
12 s2 --> i am alex,age 19
View Code

 

 實例2:經過字典格式化(**kwargs)
 1 #方法1:
 2 s3 = "i am {name},age {age}".format(name='alex',age=19)
 3 print('s3 -->',s3)
 4 
 5 
 6 #方法2:
 7 dic={'name':'alex','age':19}
 8 s4 = "i am {name},age {age}".format(**dic)
 9 print('s4 -->',s4)
10 
11 顯示結果:
12 s3 --> i am alex,age 19
13 s4 --> i am alex,age 19
View Code

 

 

字符串格式化----百分號方式(%)

1、%的格式化功能:
格式:%[(name)][flags][width].[precision]typecode
 1 (name):可選,用於選擇指定的key
 2 flags: 可選,可供選擇的值有:
 3 +:     右對齊;正數前加正好,負數前加負號;
 4 -:     左對齊;正數前無符號,負數前加負號;
 5 空格:  右對齊;正數前加空格,負數前加負號;
 6 0:     右對齊;正數前無符號,負數前加負號;用0填充空白處
 7 width: 可選,佔有寬度
 8 .precision:可選,小數點後保留的位數
 9 typecode:必選
10 s,獲取傳入對象的__str__方法的返回值,並將其格式化到指定位置
11 r,獲取傳入對象的__repr__方法的返回值,並將其格式化到指定位置
12 c,整數:將數字轉換成其unicode對應的值,10進制範圍爲 0 <= i <= 1114111(py27則只支持0-255);字符:將字符添加到指定位置
13 o,將整數轉換成 八  進製表示,並將其格式化到指定位置
14 x,將整數轉換成十六進制表示,並將其格式化到指定位置
15 d,將整數、浮點數轉換成 十 進製表示,並將其格式化到指定位置
16 e,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(小寫e)
17 E,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(大寫E)
18 f, 將整數、浮點數轉換成浮點數表示,並將其格式化到指定位置(默認保留小數點後6位)
19 F,同上
20 g,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(若是是科學計數則是e;)
21 G,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(若是是科學計數則是E;)
22 %,當字符串中存在格式化標誌時,須要用 %%表示一個百分號
23 
24 注:Python中百分號格式化是不存在自動將整數轉換成二進制表示的方式
參數說明

 

 

2、經常使用的格式化操做:html

 1 #字符串:
 2 tpl = "i am %s" % "alex"
 3 print('tpl--->',tpl)
 4 
 5 #字符串 + 數字
 6 tpl1 = "i am %s age %d" % ("alex", 18)
 7 print('tpl1--->',tpl1)
 8 
 9 #別名 + {} 方式
10 tpl2 = "i am %(name)s age %(age)d" % {"name": "alex", "age": 18}
11 print('tpl2--->',tpl2)
12 
13 #浮點 + 提取指定位數
14 tpl3 = "percent %.2f" % 99.97623
15 print('tpl3--->',tpl3)
16 
17 #別名 + 浮點 + 提取指定位數 
18 tpl4 = "i am %(pp).2f" % {"pp": 123.425556, }
19 print('tpl4--->',tpl4)
20 
21 #顯示"%"號 + 別名 + 浮點 + 提取指定位數 
22 tpl5 = "i am %(pp).2f %%" % {"pp": 123.425556, }
23 print('tpl5--->',tpl5)
24 
25 
26 顯示結果:
27 tpl---> i am alex
28 tpl1---> i am alex age 18
29 tpl2---> i am alex age 18
30 tpl3---> percent 99.98
31 tpl4---> i am 123.43
32 tpl5---> i am 123.43 %
View Code

 

3、其餘練習:python

 1 1、佔位符格式化:
 2 s = "講課老師%s,年齡%d,聽課學生%s" %('alex',32,'dy')
 3 print(s)
 4 
 5 #輸出結果:
 6 講課老師alex,年齡32,聽課學生dy
 7 
 8 
 9 二、佔位符別名格式化:(name:可用 "{ }" 進行傳值)
10 s = "講課老師: %(teacher)s,年齡: %(age)d,聽課學生: %(students)s" %{'teacher':'alex','age':32,'students':'dy'}
11 print(s)
12 
13 #輸出結果:
14 講課老師: alex,年齡: 32,聽課學生: dy
15 
16 
17 3、左右對齊方式:【flags:須要結合寬度(width)一塊兒使用】
18 s = "講課老師: %(teacher)+10s,年齡: %(age)d,聽課學生: %(students)s" %{'teacher':'alex','age':32,'students':'dy'}
19 print(s)
20 
21 #輸出結果
22 講課老師:       alex,年齡: 32        ,聽課學生: dy
23 
24 
25 
26 4、正負數的值:
27 s = "講課老師: %(teacher)-10s,年齡: %(age)+10d,聽課學生: %(students)+10s,年齡:%(age1)-10d" %{'teacher':'alex','age':+32,'students':'dy','age1':-30}
28 print(s)
29 
30 #輸出結果:
31 講課老師: alex      ,年齡:        +32,聽課學生:         dy,年齡:-30
32 
33 
34 
35 5、浮點:
36 s = "講課老師: %(teacher)-10s,年齡: %(age)+10d,聽課學生: %(students)+10s,年齡:%(age1)-10d,%(p)f" \
37     %{'teacher':'alex','age':+32,'students':'dy','age1':-30,"p":1.234567}
38 print(s)
39 
40 #顯示結果:
41 講課老師: alex      ,年齡:        +32,聽課學生:         dy,年齡:-30       ,1.234567
42 
43 
44 
45 六、浮點保留"N"爲小數:
46 s = "講課老師: %(teacher)-10s,年齡: %(age)+10d,聽課學生: %(students)+10s,年齡:%(age1)-10d,%(p).2f" \
47     %{'teacher':'alex','age':+32,'students':'dy','age1':-30,"p":1.234567}
48 
49 print(s)
50 
51 #x顯示結果:
52 講課老師: alex      ,年齡:        +32,聽課學生:         dy,年齡:-30       ,1.23
View Code

 

 

字符串格式化---Format方式

1、format格式化與百分號的有差別:
一、支持佔位符填充
二、能夠居中
三、%能夠進行轉換百分比
四、#能夠2 4 8進制的添加
........
 
 
2、格式:
 1 [[fill]align][sign][#][0][width][,][.precision][type]
 2 
 3 
 4 fill    :【可選】在空白處填充的字符(只能填充一個字符)
 5 align:【可選】對齊方式(需配合width使用)
 6         <,內容左對齊
 7         >,內容右對齊(默認)
 8         =,內容右對齊,將符號放置在填充字符的左側,且只對數字類型有效。 即便:符號+填充物+數字
 9         ^,內容居中
10 sign:【可選】有無符號數字
11         +,正號加正,負號加負;
12         -,正號不變,負號加負;
13         空格 ,正號空格,負號加負;
14 #   :【可選】對於二進制、八進制、十六進制,若是加上#,會顯示 0b/0o/0x,不然不顯示
15 , :【可選】爲數字添加分隔符,如:1,000,000
16 width:【可選】格式化位所佔寬度
17 .precision:【可選】小數位保留精度
18 type  :【可選】格式化類型
19         傳入」 字符串類型 「的參數
20         s,格式化字符串類型數據
21         空白,未指定類型,則默認是None,同s
22         傳入「 整數類型 」的參數
23         b,將10進制整數自動轉換成2進製表示而後格式化
24         c,將10進制整數自動轉換爲其對應的unicode字符
25         d,十進制整數
26         o,將10進制整數自動轉換成8進製表示而後格式化;
27         x,將10進制整數自動轉換成16進製表示而後格式化(小寫x)
28         X,將10進制整數自動轉換成16進製表示而後格式化(大寫X)
29         傳入「 浮點型或小數類型 」的參數
30         e, 轉換爲科學計數法(小寫e)表示,而後格式化;
31         E, 轉換爲科學計數法(大寫E)表示,而後格式化;
32         f , 轉換爲浮點型(默認小數點後保留6位)表示,而後格式化;
33         F, 轉換爲浮點型(默認小數點後保留6位)表示,而後格式化;
34         g, 自動在e和f中切換
35         G, 自動在E和F中切換
36         %,顯示百分比(默認顯示小數點後6位)
View Code

 

3、傳參:ide

 1 tpl = "i am {}, age {}, {}".format("seven", 18, 'alex')
 2 print('tpl--->',tpl)
 3 
 4 #*+列表+位置傳值:(若是傳值列表,必需要加上 " * ",若是不加*,則會把整個列表當初一個元素)
 5 tpl1 = "i am {}, age {}, {}".format(*["seven", 18, 'alex'])
 6 print('tpl1--->',tpl1)
 7 
 8 
 9 #索引的方式傳值:
10 tpl2 = "i am {0}, age {1}, really {0}".format("seven", 18)
11 print('tpl2--->',tpl2)
12 
13 
14 #索引+列表+(*args)傳值:
15 tpl3 = "i am {0}, age {1}, really {0}".format(*["seven", 18])
16 print('tpl3--->',tpl3)
17 
18 
19 #別名傳值:
20 tpl4 = "i am {name}, age {age}, really {name}".format(name="seven", age=18)
21 print('tpl4--->',tpl4)
22 
23 
24 #別名+(**kwargs)傳值:
25 tpl5 = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})
26 print('tpl5--->',tpl5)
27 
28 
29 #索引+索引【下標】的傳值:
30 tpl6 = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])
31 print('tpl6--->',tpl6)
32 
33 
34 #指定類型傳值:字符串、數字、小數點
35 tpl7 = "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1)
36 print('tpl7--->',tpl7)
37 
38 
39 #指定類型+順序+(*args)傳值:
40 tpl8 = "i am {:s}, age {:d}".format(*["seven", 18])
41 print('tpl8--->',tpl8)
42 
43 
44 #別名+指定類型傳值:
45 tpl9 = "i am {name:s}, age {age:d}".format(name="seven", age=18)
46 print('tpl9--->',tpl9)
47 
48 
49 #別名+指定類型+(**kwargs)傳值:
50 tpl10 = "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": 18})
51 print('tpl10--->',tpl10)
52 
53 
54 #2 8 10 16進制+百分號傳值
55 tpl11 = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
56 print('tpl11--->',tpl11)
57 
58 
59 tpl12 = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
60 print('tpl12--->',tpl12)
61 
62 
63 #索引+2 8 10 16+百分號傳值: 
64 tpl13 = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)
65 print('tpl13--->',tpl13)
66 
67 
68 #別名+2 8 10 16 +百分號傳值:
69 tpl14 = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=15)
70 print('tpl14--->',tpl14)
71 
72 
73 輸出結果:
74 tpl---> i am seven, age 18, alex
75 tpl1---> i am seven, age 18, alex
76 tpl2---> i am seven, age 18, really seven
77 tpl3---> i am seven, age 18, really seven
78 tpl4---> i am seven, age 18, really seven
79 tpl5---> i am seven, age 18, really seven
80 tpl6---> i am 1, age 2, really 3
81 tpl7---> i am seven, age 18, money 88888.100000
82 tpl8---> i am seven, age 18
83 tpl9---> i am seven, age 18
84 tpl10---> i am seven, age 18
85 tpl11---> numbers: 1111,17,15,f,F, 1587.623000%
86 tpl12---> numbers: 1111,17,15,f,F, 1587.623000%
87 tpl13---> numbers: 1111,17,15,f,F, 1500.000000%
88 tpl14---> numbers: 1111,17,15,f,F, 1500.000000%
傳參示例

 

更多格式化方法

 https://docs.python.org/3/library/string.htmlspa

相關文章
相關標籤/搜索