在編寫程序的過程中,經常需要進行格式化輸出,每次用每次查。干脆就在這裡整理一下,以便索引。
"%"是Python風格的字符串格式化操作符,非常類似C語言裡的printf()函數的字符串格式化(C語言中也是使用%)。
下面整理了一下Python中字符串格式化符合:
格式化符號
說明
%c
轉換成字符(ASCII 碼值,或者長度為一的字符串)
%r
優先用repr()函數進行字符串轉換
%s
優先用str()函數進行字符串轉換
%d / %i
轉成有符號十進制數
%u
轉成無符號十進制數
%o
轉成無符號八進制數
%x / %X
轉成無符號十六進制數(x / X 代表轉換後的十六進制字符的大小寫)
%e / %E
轉成科學計數法(e / E控制輸出e / E)
%f / %F
轉成浮點數(小數部分自然截斷)
%g / %G
%e和%f / %E和%F 的簡寫
%%
輸出% (格式化字符串裡面包括百分號,那麼必須使用%%)
這裡列出的格式化符合都比較簡單,唯一想要強調一下的就是"%s"和"%r"的差別。
看個簡單的代碼:
string = "Hello\tWill\n" print "%s" %string print "%r" %string
代碼的輸出為:
其實,這裡的差異是str()和repr()兩個內建函數之間的差異:
通過"%"可以進行字符串格式化,但是"%"經常會結合下面的輔助符一起使用。
輔助符號
說明
*
定義寬度或者小數點精度
-
用做左對齊
+
在正數前面顯示加號(+)
#
在八進制數前面顯示零(0),在十六進制前面顯示"0x"或者"0X"(取決於用的是"x"還是"X")
0
顯示的數字前面填充"0"而不是默認的空格
(var)
映射變量(通常用來處理字段類型的參數)
m.n
m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)
看一些簡單的 例子:
num = 100 print "%d to hex is %x" %(num, num) print "%d to hex is %X" %(num, num) print "%d to hex is %#x" %(num, num) print "%d to hex is %#X" %(num, num) # 浮點數 f = 3.1415926 print "value of f is: %.4f" %f # 指定寬度和對齊 students = [{"name":"Wilber", "age":27}, {"name":"Will", "age":28}, {"name":"June", "age":27}] print "name: %10s, age: %10d" %(students[0]["name"], students[0]["age"]) print "name: %-10s, age: %-10d" %(students[1]["name"], students[1]["age"]) print "name: %*s, age: %0*d" %(10, students[2]["name"], 10, students[2]["age"]) # dict參數 for student in students: print "%(name)s is %(age)d years old" %student
代碼輸出為:
對於Python的格式化操作符,不僅可以接受tuple類型的參數,也可以支持dict,象上面代碼的最後一部分,那麼格式化字符串中就可以直接使用"%(key)s"(這裡的s根據具體類型改變)的方式表示dict中對應的value了。
其實,在Python中進行字符串的格式化,除了格式化操作符,還可以使用string模塊中的字符串模板(Template)對象。下面就主要看看Template對象的substitute()方法:
from string import Template s = Template("Hi, $name! $name is learning $language") print s.substitute(name="Wilber", language="Python") d = {"name": "Will", "language": "C#"} print s.substitute(d) # 用$$表示$符號 s = Template("This book ($bname) is 17$$") print s.substitute(bname="TCP/IP")
代碼結果為:
本文整理了一些格式化字符,以及一些輔助指令,結合格式化操作符(%),就可以生成特定格式的字符串了。也可以使用字符串模板來進行字符串格式化。
無需操作系統直接運行 Python 代碼 http://www.linuxidc.com/Linux/2015-05/117357.htm
CentOS上源碼安裝Python3.4 http://www.linuxidc.com/Linux/2015-01/111870.htm
《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm
《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm
Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm
在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm
Python 語言的發展簡史 http://www.linuxidc.com/Linux/2014-09/107206.htm
Python 的詳細介紹:請點這裡
Python 的下載地址:請點這裡