python的字元串格式化有兩種方式:百分號方式、format方式。百分號方式相對來說比較老,而format方式則是比較先進的方式。 1)百分號格式 語法: %[(name)][flags][width].[precision]typecode name:--可選,用於選擇指定的key flags: ...
python的字元串格式化有兩種方式:百分號方式、format方式。百分號方式相對來說比較老,而format方式則是比較先進的方式。
1)百分號格式
語法:
%[(name)][flags][width].[precision]typecode
name:--可選,用於選擇指定的key
flags: --可選,可供選擇的值有:
+:--右對齊,正數前加正號,負數前加負號
-:--左對齊,正數前無符號,負數前加負號
空格:--右對齊,正數前加空格,負數前加負號
0:--右對齊,正數前無符號,負數前加負號,用0填充空白處
width:--可選,占有寬度
precision:--可選,小數點後保留的位數
typecode:--必選,可供選擇的值有:
%s 字元串 (採用str()的顯示)
%r 字元串 (採用repr()的顯示)
%c 單個字元
%b 二進位整數
%d 十進位整數
%i 十進位整數
%o 八進位整數
%x 十六進位整數
%e 指數 (基底寫為e)
%E 指數 (基底寫為E)
%f 浮點數
%F 浮點數,與上相同
%g 指數(e)或浮點數 (根據顯示長度)
%G 指數(E)或浮點數 (根據顯示長度)
%% 表示一個字元"%"
註意:python中百分號格式化是不存在自動將整數轉換成二製表示的方式
常用格式化示例:
1 str1 = "I am learning %s" % "python"
2
3 str2 = "my name is %s , age %d" %("yusheng_liang", 20)
4
5 str3 = "my name is %(name)s , age %(age)d" %{"name": "yusheng_liang", "age": 20}
6
7 str4 = "precent %.2f" % 99.97654
8
9 str5 = "I am %(qq).2f" %{"qq": 123.45678}
10
11 str6 = "I am %(qq).2f %%" %{"qq": 123.45678}
12
13
14 print("str1:", str1)
15 print("str2:", str2)
16 print("str3:", str3)
17 print("str4:", str4)
18 print("str5:", str5)
19 print("str6:", str6)
View Code
示例結果:
2)format方式
語法:
[[fill]align][sign][#][0][width][,][.precision][type]
fill:--可選,空白處填充的字元
align:--可選,對齊方式(需配合width使用)
<內容左對齊
>:內容右對齊(預設)
=:內容右對齊,將符號放置在填充字元的左側,且只對數字類型有效。即:符號+填充物+數字
^:內容居中
sign:--可選,有無符號數字
+:正號加正,負號加負
-:正號不變,負號加負
空格:正號空格,負號加負
#:--可選,對於二進位、八進位、十六進位,如果加上#,會顯示0b/0o/0x,否則不顯示
,:--可選,為數字洄分隔符,如:1,000,000
width:--可選,格式化位所占寬度
.precision:--可選,小數位保留精度
type:--可選,格式化類型
對於整數類型,輸出格式包括6 種:
b: 輸出整數的二進位方式;
c: 輸出整數對應的 Unicode 字元;
d: 輸出整數的十進位方式;
o: 輸出整數的八進位方式;
x: 輸出整數的小寫十六進位方式;
X: 輸出整數的大寫十六進位方式;
對於浮點數類型,輸出格式包括4 種:
e: 輸出浮點數對應的小寫字母 e 的指數形式;
E: 輸出浮點數對應的大寫字母 E 的指數形式;
f: 輸出浮點數的標準浮點形式;
%: 輸出浮點數的百分形式。
常用格式化示例:
1 str1 = "I am {}, age {}".format("yusheng_liang", 20)
2 str2 = "I am {}, age {}".format(*["yusheng_liang", 20])
3 str3 = "I am {0}, age {1}".format("yusheng_liang", 20)
4 str4 = "I am {name}, age {age}".format(name = "yusheng_liang", age = 20)
5 str5 = "I am {name}, age {age}".format(**{"name": "yusheng_liang", "age": 20}) #以字典的方式提供數據
6 str6 = "I am {0[0]}, age {0[1]}, set {1[2]}".format([1, 2, 3], [11, 22, 33])
7 str7 = "I am {:s}, age {:d}, money {:f}".format("yusheng_liang", 20, 5000.23)
8 str8 = "I am {:s}, age {:d}".format("yusheng_liang", 20)
9 str9 = "I am {name:s}, age {age:d}".format(name = "yusheng_liang", age = 20)
10 str10 = "I am {name:s}, age {age:d}".format(**{"name": "yusheng_liang", "age": 20})
11 str11 = "number: {:b}, {:o}, {:d}, {:x}, {:X}, {:%}".format(15, 15, 15, 15, 15, 15, 15.456, 2)
12
13
14 print("str1:", str1)
15 print("str2:", str2)
16 print("str3:", str3)
17 print("str4:", str4)
18 print("str5:", str5)
19 print("str6:", str6)
20 print("str7:", str7)
21 print("str8:", str8)
22 print("str9:", str9)
23 print("str10:", str10)
24 print("str11:", str11)
View Code
示例結果: