python str.format知識點備忘

來源:互聯網
上載者:User

標籤:並且   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知識點備忘

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.