python format 用法詳解


format 用法詳解

  1. 不需要理會數據類型的問題,在%方法中%s只能替代字符串類型
  2. 單個參數可以多次輸出,參數順序可以不相同
  3. 填充方式十分靈活,對齊方式十分強大
  4. 官方推薦用的方式,%方式將會在后面的版本被淘汰

format填充字符串

一 填充

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

print('hello {0} i am {1}'.format('world','python'))    
# 輸入結果:hello world i am python
print('hello {} i am {}'.format('world','python') ) 
#輸入結果:hello world i am python
print('hello {0} i am {1} . a now language-- {1}'.format('world','python')
# 輸出結果:hello world i am python . a now language-- python

 

foramt會把參數按位置順序來填充到字符串中,第一個參數是0,然后1 …… 
也可以不輸入數字,這樣也會按順序來填充 
同一個參數可以填充多次,這個是format比%先進的地方

2.通過key來填充

obj = 'world'
name = 'python'
print('hello, {obj} ,i am {name}'.format(obj = obj,name = name))
# 輸入結果:hello, world ,i am python

  

3.通過列表填充

list=['world','python']
print('hello {names[0]}  i am {names[1]}'.format(names=list))# 輸出結果:hello world  i am python
print('hello {0[0]}  i am {0[1]}'.format(list)) #輸出結果:hello world  i am python

  

4.通過字典填充

dict={‘obj’:’world’,’name’:’python’} 
print(‘hello {names[obj]} i am {names[name]}’.format(names=dict)) 
# hello world i am python 

  

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

5.通過類的屬性填充

dict={‘obj’:’world’,’name’:’python’} 
print(‘hello {names[obj]} i am {names[name]}’.format(names=dict)) 
# hello world i am python 

  

6.使用魔法參數

args = [‘,’,’inx’] 
kwargs = {‘obj’: ‘world’, ‘name’: ‘python’} 
print(‘hello {obj} {} i am {name}’.format(*args, **kwargs))
# 輸入結果:hello world , i am python

  

注意:魔法參數跟你函數中使用的性質是一樣的:這里format(*args, **kwargs)) 等價於:format(‘,’,’inx’,obj = ‘world’,name = ‘python’)


format 格式轉換

數字 格式 輸出 描述
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)

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

其它用法

1.轉義“{}”

print('{{hello}} {{{0}}}'.format('world')) #輸出結果:{hello} {world}

  

跟%中%%轉義%一樣,format中用 { 來轉義{ ,用 } 來轉義 }

2.format作為函數變量

name = 'InX'
hello = 'hello,{} welcome to python world!!!'.format #定義一個問候函數
hello(name) 
# 輸入結果:hello,inx welcome to python world!!!

  

3.格式化datetime

from datetime import datetime
now=datetime.now()
print '{:%Y-%m-%d %X}'.format(now) 
# 輸出結果:2017-07-24 16:51:42

  

4.{}內嵌{}

print('hello {0:>{1}} '.format('world',10)) ##輸出結果:hello      world 

  

從最內層的{}開始格式化

5.嘆號的用法

print(‘{!s}國’.format(‘中’)) 
# 輸出結果:中國 
print(‘{!a}國’.format(‘中’)) 
# 輸出結果:’\u4e2d’國 
print(‘{!s}國’.format(‘中’)) 
# 輸出結果:’中’國 

  

!后面可以加s r a 分別對應str() repr() ascii() 作用是在填充前先用對應的函數來處理參數 
差別就是repr帶有引號,str()是面向用戶的,目的是可讀性,repr()是面向Python解析器的,返回值表示在python內部的含義,ascii (),返回ascii編碼

請給作者點贊:---> 原文鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM