python格式化字符串

字符串的輸出格式可以由下面的語法進行控制:
%[(name)][flag][width][.][precision]type

這套格式化字符串的方法被很多編程語言沿用,包括c,cpp,java,python等,所以,我們明白了這一套的話,在別的語言里同樣也可以用,所以學一下這套語法還是很有用處的.
上面被[]括住的項表示該項是可選的.

其中,(name)表示命名,這個其實用得不多.這也是python對這套語法的擴展,別的語言里沒有這一套.這里僅僅舉一個栗子,說明一下,即使沒有這一項,也沒有多大的影響,這一項可以通過別的格式化操作實現,所以這玩意只是一個語法糖而已,覺得麻煩的話,丟掉就好了:

print("I'm %(name)s. I'm %(age)d year old" % {'name':'Vamei', 'age':99})

結果如下:

I'm Vamei. I'm 99 year old

flag為標記格式限定符號,包含+``-``#0,+表示右對齊(會顯示正負號),-表示左對齊,前面默認為填充空格(即默認右對齊),0表示填充0#表示八進制時前面補充0,16進制數填充0x,二進制填充0b.

width用于表示寬度或者說最短長度,一個字符占據一個寬度,包含小數點,當要輸出的內容對應的字符數小于width時會按照前面flag的指示來進行填充,如果flag為空,那么用空格填充.

precision一般只對小數有效,控制輸出在小數點之后的位數.

type表示類型碼,具體如下表所示:

類型碼 說明
%s 字符串 (采用str()的顯示)
%r 字符串 (采用repr()的顯示)
%c 單個字符
%b 二進制整數
%d 有符號十進制整數
%i 有符號十進制整數
%o 無符號八進制整數
** %x ** 輸出使用小寫字母a~f,表示無符號十六進制整數
%X 輸出使用大寫字母A~F,表示無符號十六進制整數
%e 指數 (基底寫為e)
%E 指數 (基底寫為E)
%f 浮點數
%F 浮點數,與上相同
%g 指數(e)或浮點數 (根據顯示長度)
%G 指數(E)或浮點數 (根據顯示長度)
%u 無符號十進制整數

這套語法其實是一個非常小的DSL,很有意思,有興趣的同學可以練習一下,自上而下分析設定,做一個小型的parser.

補充

一些不常用,但是很有用的東西.

類型碼 說明
hh 和整數類型碼一起使用,表示一個signed char或者unsigned char(8bit),常用有%hhx表示用16進制輸出一個1字節的unsigned char類型
ll 和整數類型碼一起使用,表示一個long long int或者unsigned long long int類型,比如%llx表示用16進制輸出一個4字節的unsigned long long int類型
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 在許多編程語言中都包含有格式化字符串的功能,比如C和Fortran語言中的格式化輸入輸出。Python中內置有對字...
    古佛青燈度流年閱讀 774評論 2 0
  • format格式化字符串方法相較于老版%格式方法的優點:1.不需要理會數據類型的問題,在%方法中'%s'只能替代字...
    雷子_閱讀 1,270評論 0 1
  • 最近在查找資料的時候,發現一篇文章講解《Python格式化字符串》,文章講的很透徹,特此轉載。 格式化操作符(%)...
    everfight閱讀 483評論 0 1
  • 萬般皆下品,唯有讀書高。 這段時間學習了下Python。看來寫資料。算是讀書筆記吧,記錄一下便于回顧。假期綜合癥,...
    小學生的博客閱讀 482評論 0 0
  • 連載小說 (一) 落馬鎮的酒出名,烈的很,連鎮東頭的李寡婦最多也只能喝上兩大碗。每次李寡婦喝完酒,李寡婦都會故意不...
    我有6個男神閱讀 200評論 0 0