Python中的format()函式
阿新 • • 發佈:2019-01-18
普通格式化方法
-
(%s%d)生成格式化的字串,其中s是一個格式化字串,d是一個十進位制數;
-
格式化字串包含兩部分:普通的字元和轉換說明符(見下表),
將使用元組或對映中元素的字串來替換轉換說明符;
**如果d是元組的話,必須與s中的轉換說明符個數一致;
如果d是dict的話,每個轉換說明符都必須與dict中一個有效的鍵名相關聯.**
轉換說明符,都以%開始 | 輸出格式 |
---|---|
d,i | 十進位制 |
u | 無符號數 |
o | 八進位制 |
x | 十六進位制或長整數 |
X | 十六進位制 |
f,e,E | 浮點數 |
g,G | 指數小於-4時使用 |
s | 字串或者任意物件,同str生成的字串 |
r | 同repr生成的字串 |
3.在%字元和轉換字元之間,可以出現以下修飾符,並且只能按照以下順序出現,
- 位於括號中的一個鍵名,用於從dict中獲取這個key對應的值,如果不存在key,則引發異常;
- 下面中的一個或者多個:
- -,左對齊標誌,預設為右對齊;
- +,表示應該包含數字的正負號;
- 0,表示用0來填充;
- 指定最小自動寬度的數字.轉換後的值將被列印在至少為這個寬度的字串中,並且在左邊填充空格至滿欄位寬(如果指定了-標誌,則在右邊填充);(如果字串本身的長度大於指定寬度,則這個寬度就沒用啦).
- 一個小數點,用於按照精度分割欄位寬度;
- 一個數字,指定要列印字串中最大字元個數,浮點數中小數點之後的位數或整數的最小位數;
-
*用於任意寬度的欄位中替換數字.如果存在,寬度將從元組的下一項開始讀取;(有點暈啊- -,結合下面程式碼看就容易理解了)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
高階字串格式化
-
字串的format()函式,該方法收集位置引數和關鍵字引數的任意集合,並使用它們的值來替換字串中的佔位符;
-
形式為{n}(n為整數)的佔位符將被format()方法第n個引數所代替;
形式為{name}的佔位符將被引數中為name的引數所替代;
如果要用format()輸出{xx},必須使用{{xx}},否則會因為找不到對應的引數值而報錯;
-
可以指定格式說明符,對輸出進行更加精確地控制.
給每個佔位符新增可選的格式說明符號,如{name:format_spec}.這種說明符可指定列寬,小數位和對齊方式.
一般格式[fill,align,sign,0,width,.precision,type],每一處都是可選的.
- fill:是一個可選的填充字元,用於填充空白,預設為空格;
- align,對齊方式.<,>,^分別代表左,右,居中對齊,預設為右對齊;
- sign,取值為:
- +,所有數字簽名都要加上符號;
- -,預設值,只在負數簽名加符號;
- 空格,在正數前面加上一個空格;
- 0,在寬度前面加0表示用0來填充數值前面的空白;
- width,寬度;
- .precision,精度的位數;
- type,資料型別,如d(整數),s(字串)等
-
某些情況下,可能只是要格式化物件的str()或repr()表示,需要繞過__format__()方法.為此,可以在格式說明符前面新增!r或!s說明符,如果不懂見下面程式碼.