標籤:並且 new init 內建函數 medium ret 不同的 python3 重點
在Python3.6.5版本測試通過
文法 str.format(*args, **kwargs)
它通過{}和:來代替%。
"映射”樣本:
1.通過位置
In [1]: ‘{0},{1}‘.format(‘kzc‘,18)Out[1]: ‘kzc,18‘In [2]: ‘{},{}‘.format(‘kzc‘,18)Out[2]: ‘kzc,18‘In [3]: ‘{1},{0},{1}‘.format(‘kzc‘,18)Out[3]: ‘18,kzc,18‘2.通過關鍵字參數
In[5]:‘{name},{age}‘.format(age=18,name=‘kzc‘)Out[5]: ‘kzc,18‘
或字典方式
In [9]: dic={‘name‘:‘ytjoh‘,‘age‘:48} ...: ‘{name},{age}‘.format(**dic)Out[9]: ‘ytjoh,48‘
list和tuple可以通過“打散”成普通參數給函數(使用*),而dict可以打散成關鍵字參數給函數(**)。所以可以輕鬆的傳個list/tuple/dict給format函數。
3.通過對象屬性
In [28]: class Person: ...: def __init__(self,name,age): ...: self.name,self.age = name,age ...: def __str__(self): ...: return ‘This guy is {self.name},is {self.age} old‘.format(self=self)In [29]: str(Person(‘ytjoh‘,48))Out[29]: ‘This guy is ytjoh,is 48 old‘
4.通過下標
In [30]: p=[‘ytjoh‘,48] ...: ‘{0[0]},{0[1]}‘.format(p)Out[30]: ‘ytjoh,48‘
In [40]: dic={‘name‘:‘ytjoh‘,‘age‘:48} ...: ‘{d[name]},{d[age]}‘.format(d=dic)Out[40]: ‘ytjoh,48‘
5.
用%s和%r替換
In [35]: "repr() shows quotes: {!r}; str() doesn‘t: {!s}".format(‘test1‘, ‘test2‘)Out[35]: "repr() shows quotes: ‘test1‘; str() doesn‘t: test2"
格式限定符(format_spec)它有著豐富的的“格式限定符”(文法是{}中帶:號),比如:填充與對齊填充常跟對齊一起使用^、<、>分別是置中、靠左對齊、靠右對齊,後面頻寬度:號後面帶填充的字元,只能是一個字元,不指定的話預設是用空格填充比如
In [31]: ‘{:>8}‘.format(‘ytjoh‘)Out[31]: ‘ ytjoh‘format_spec詳解
在這裡,我們重點看一下格式描述(format_spec)這一項。
格式描述中含有6個選項,分別是 fill、align、sign、width、precision、type。 它們的位置關係如下:
[[fill]align][sign][#][0][width][,][.precision][type]
fill 可以是任一字元,預設為空白格。
align 僅當指定最小寬度時有效。
< 靠左對齊(預設選項)
> 靠右對齊
= 僅對數字有效;將填充字元放到符號與數字間,例如 +0001234
^ 置中對齊
sign 僅對數字有效
+ 所有數字均帶有符號
- 僅負數帶有符號(預設選項)
即空格;正數前面帶空格,負數前面帶符號
‘#‘ 只對整數有效
自動在二進位、八進位、十六進位數值前添加對應的 0b、0o、 0x。
‘,‘ 自動在每三個數字之間添加 , 分隔字元。
width 十進位數字,定義最小寬度。如果未指定,則由內容的寬度來決定。
如果沒有指定對齊(align),那麼可以在 width 前面添加一個0來實現自動填滿0,等價於 fill 設為 0 並且 align 設為 =。
precision 用於確定浮點數的精度,或字串的最大長度。不可用於整型數值。
type 確定參數類型,預設為 s ,即字串。
整數輸出類型:
b:以二進位格式輸出
c:將整數轉換成對應的 unicode 字元
d:以十進位輸出(預設選項)
o:以八進位輸出
x:以十六進位小寫輸出
X:以十六進位大寫輸出
n:與 d 相同,但使用當前環境的分隔字元來分隔每3位元字
十進位浮點數輸出類型:
e:指數標記;使用科學計數法輸出,用e來表示指數部分,預設 precision 為6
E:與 e 相同,但使用大寫 E 來表示指數部分
f:以定點形式輸出數值,預設 precision 為6
F:與 f 相同
g:通用格式;對於給定的 precision p >= 1,取數值的p位有效數字,並以定點或科學計數法輸出(預設選項)
G:通用格式;與 g 相同,當數值過大時使用 E 來表示指數部分
n:與 g 相同,但使用當前環境的分隔字元來分隔每3位元字
%:百分比標記;使用百分比的形式輸出數值,同時設定 f 標記
相關函數:format : 內建函數
用法:format(value[, format_spec])
本函數把值value按format_spec的格式來格式化,然而函數解釋format_spec是根據value的類型來決定的,不同的類型有不同的格式化解釋。當參數format_spec為空白時,本函數等同於函數str(value)的方式。
其實本函數調用時,是把format(value, format_spec)的方式轉換為type(value).__format__(format_spec)方式來調用,因此在value類型裡就尋找方法__format__(),如果找不到此方法,就會返回異常TypeError
In [36]: print(‘aaaa‘.__format__(‘?>20‘))????????????????aaaaIn [36]: In [37]: format(‘aaaa‘,‘?>20‘)Out[37]: ‘????????????????aaaa‘
python str.format知識點備忘