深入淺出Python字串格式化

pythontab發表於2016-06-02

字串格式化運算子(%),非常類似於C 語言裡面的printf()函式的字串格式化,甚至所用的符號都一樣,都用百分號(%),並且支援所有printf()式的格式化操作。語法如下:

format_string % string_to_convert

format_string為格式標記字串,形式為“%cdoe”;string_to_convert 為要格式化的字串,如果是兩個以上,則需要用小括號括起來。


字串格式化符號

格式化符號說明
%c轉換成字元(ASCII 碼值,或者長度為一的字串)
%s轉換成字串,優先用str()函式進行字串轉換
%d轉成有符號十進位制數
%u轉成無符號十進位制數
%o轉成無符號八進位制數
%x(Unsigned)轉成無符號十六進位制數
%e轉成科學計數法
%%輸出%
%X(Unsigned)轉成無符號十六進位制數,轉換後16進位制字元大寫,和%e類似(轉換後小寫)

字串格式化輸出舉例:

charA = 65
charB = 66
print("ASCII碼65代表:%c" % charA)
print("ASCII碼66代表:%c" % charB)
Num1 = 0xEF3
Num2 = 0xAB03
print('轉換成十進位制分別為:%u和%u' % (Num1, Num2))
Num3 = 1500000
print('轉換成科學計數法為:%e' % Num3)

輸出:

ASCII碼65代表:A

ASCII碼66代表:B

轉換成十進位制分別為:3827和43779

轉換成科學計數法為:1.200000e+06


格式化字元還可以配合輔助符號一起使用,非常方便。

輔助符號,如下表所示:

輔助符號說明
*定義寬度或者小數點精度
-用做左對齊
+在正數前面顯示加號(+)
<sp>在正數前面顯示空格
#在八進位制數前面顯示零(0),在十六進位制前面顯示“0x”或者“0X”(取決於用的是“x”還是“X”)
0顯示的數字前面填充“0”而不是預設的空格
m.n是顯示的最小總寬度,n 是小數點後的位數

注意:輔助符號要在百分號(%)和格式化符號之間。


輔助符號舉例:

Num1 = 108
print("%#X" % Num1)
Num2 = 234.567890
print("%.2f" % Num2)

輸出:

0X6C

234.57


相關文章