python的format方法

  1. format的使用格式:'{}'.format()        '{}...{}'.format(*args,**kwargs)

  2. {replacement_field}的格式:
    replacement_field包括[field_name][!conversion][:format_spec]三部分
    field_name     空,則順序對應位置參數;或按指定的args_number、下標、kwargs_name對應()中傳 入的參數
    !conversion    !r,!s,!a  !r輸出acsii格式  !s輸出字符串格式  !a輸出數值格式

    :format_spec的格式:

    :[fill填充][align對齊][sign正負數符號][#][0][width數字寬度][,][.precision小數位數][type數值類型]
             fill        可以填寫任何字符
             align    <是左對齊, >是右對齊,^是居中對齊
             sign     sign是符號, +表示正號,-表示負號
             width  是數字寬度,表示總共輸出多少位數字
             precision  是小數保留位數
             type   是輸出數字值的表示方式,b表示是二進制,o表示八進制,d表示十進制,x表示十六進制,E表示指數,f表示浮點數
        “b” | “c” | “d” | “e” | “E” | “f” | “F” | “g” | “G” | “n” | “o” | “s” | “x” | “X” | “%”





應用:

  1. 通過位置來填充字符串

1

2

3


'{0} is sunday,{0} is Feb 10! {1} is shinning!'.format('today','Tommrow')

Out[131]:'today is monday,today is Feb,10!tomrrow is shining!'


format會把參數按位置順序來填充到字符串中,第一個參數是0,然後1 ……
也可以不輸入數字,這樣也會按順序來填充。同一個參數可以填充多次。

2.通過key來填充

1

print 'hello {name1}  i am {name2}'.format(name1='Kevin',name2='Tom')                  # hello Kevin i am Tom

3.通過下標填充

1

2

3

names=['Kevin','Tom']
'hello {names[0]}  i am {names[1]}'.format(names=names)    
hello Kevin i am Tom

'hello {0[0]}  i am {0[1]}'.format(names)       
 hello Kevin i am Tom


4.通過字典的key

1

2

names={'name':'Kevin','name2':'Tom'}

print 'hello {names[name]}  i am {names[name2]}'.format(names=names)                  # hello Kevin i am Tom

注意這裏訪問字典的key,不用引號的

5.通過對象的屬性

1

2

3

4

5



class Names():
        name1='Kevin'
      name2='Tom'

print
'hello {names.name1}  i am {names.name2}'.format(names=Names)        

           hello Kevin i am Tom


6.使用魔法參數

1

2

3

args=['lu']

kwargs = {'name1': 'Kevin', 'name2': 'Tom'}

print 'hello {name1} {} i am {name2}'.format(*args, **kwargs)  # hello Kevin i am Tom

二 格式轉換

b、d、o、x分別是二進制、十進制、八進制、十六進制。

 

數字格式輸出描述
3.1415926{:.2f}3.14保留小數點後兩位
3.1415926{:+.2f}3.14帶符號保留小數點後兩位
-1{:+.2f}-1帶符號保留小數點後兩位
2.71828{:.0f}3不帶小數
1000000{:,}1,000,000以逗號分隔的數字格式
0.25{:.2%}25.00%百分比格式
1000000000{:.2e}1.00E+09指數記法
25{0:b}11001轉換成二進制
25{0:d}25轉換成十進制
25{0:o}31轉換成八進制
25{0:x}19轉換成十六進制

三 對齊與填充

數字格式輸出描述
5{:0>2}05數字補零 (填充左邊, 寬度爲2)
5{:x<4}5xxx數字補x (填充右邊, 寬度爲4)
10{:x^4}x10x數字補x (填充右邊, 寬度爲4)
13{:10}        13右對齊 (默認, 寬度爲10)
13{:<10}13左對齊 (寬度爲10)
13{:^10}    13中間對齊 (寬度爲10)

四 其他

1.轉義{和}符號

1


'{{ hello {0} }}'.format('Kevin')

{ hello Kevin }

跟%中%%轉義%一樣,formate中用兩個大括號來轉義

2.format作爲函數

1

2

f = 'hello {0} i am {1}'.format    

print f('Kevin','Tom')

3.格式化datetime

1

2



now=datetime.now()



print
'{:%Y-%m-%d %X}'.format(now)


4.{}內嵌{}

1

print 'hello {0:>{1}} '.format('Kevin',50)

5.歎號的用法

!後面可以加s r a 分別對應str() repr() ascii()

作用是在填充前先用對應的函數來處理參數

1

2



print
"{!s}".format('2')  #
2



print
"{!r}".format('2')  
# '2'


差別就是repr帶有引號,str()是面向用戶的,目的是可讀性,repr()是面向Python解析器的,返回值表示在python內部的含義


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章