1. 程式人生 > >python3格式化輸出

python3格式化輸出

輸出方式

python3使用print()函式輸出,第二種方式是使用str.format()函式格式化輸出。

print()格式控制

字串format方法字串輸入資料格式型別(%格式操作符號)

%%    輸出百分號
%c    字元及其ASCII碼
%d    有符號整數(十進位制)
%u    無符號整數(十進位制)
%o    無符號整數(八進位制)
%x    無符號整數(十六進位制)
%X    無符號整數(十六進位制大寫字元)
%e    浮點數字(科學計數法)
%E    浮點數字(科學計數法,用E代替e)
%f    浮點數字(用小數點符號)
%g    浮點數字(根據值的大小採用%e或%f)
%G
浮點數字(類似於%g) %p 指標(用十六進位制列印值的記憶體地址) %n 儲存輸出字元的數量放進引數列表的下一個變數中 %r 優先用repr()函式進行字串轉換 %s 優先用str()函式進行字串轉換

’%s’和‘%r’的區別

>>> s = 'Hello\tWorld'
>>> print('%s' % s)
Hello   World
>>> print('%r' % s)
'Hello\tWorld'
>>> 

其實,這裡的差異是str()和repr()兩個內建函式之間的差異:


- str()與repr()都是python中的內建函式,是直接用來格式化字串的函式。
- str()輸出得到的字串是面向使用者的,具有較好的可讀性
- repr()得到的字串是面向機器的
順便記一下,__str__與__repr__ 是在類(物件)中對類(物件)本身進行字串處理。

字串格式控制

%[(name)][flag][width][.][precision]type
name:可為空,數字(佔位),命名(傳遞引數名,不能以數字開頭)以字典格式對映格式化,其為鍵名
flag:標記格式限定符號,包含+-#和0,+表示右對齊(會顯示正負號),-左對齊,前面預設為填充空格(即預設右對齊),0表示填充0,#表示八進位制時前面補充0,16進位制數填充0x,二進位制填充0b
width

:寬度(最短長度,包含小數點,小於width時會填充)
precision:小數點後的位數,與C相同
type:輸入格式型別,請看上面

str.format()格式控制

{[name][:][[fill]align][sign][#][0][width][,][.precision][type]}
用{}包裹name命名傳遞給format以命名=值 寫法,非字典對映,其他和上面相同

fill =  <any character>  #fill是填充字元
align =  "<" | ">"  | "^"  #align是對齊方式,<是左對齊, >是右對齊,^是居中對齊。
sign  =  "+" | "-"   #sign是符號, +表示在正數前面顯示正號, -表示左對齊
# 八進位制顯示0,十六進位制顯示0X或者0x
0       數字前面填充0而不是空格 
width =  integer  #width是數字寬度,表示總共輸出多少位數字
precision =  integer  #precision是小數保留位數
type =  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"  #type是輸出數字值是的表示方式
比如b是二進位制表示;比如E是指數表示;比如X是十六進位制表示例子

舉例如下:

>>>print('{:,}'.format(123456))
123,456
>>>print('{a:w^8}'.format(a="8"))
www8wwww   #填充w
>>>print('%.5f' %5)
5.00000  #五位小數
>>>print('%-7s3' % 'python')
python 3
>>>print('%.3e' %2016)
2.016e+03 #也可以寫大E
>>>print("%d %s" %(123456,"myblog"))
123456 myblog
>>>print('%(what)s is %(year)d' % {'what':'this year','year':2018})
this year is 2018
>>>print('{0}{1}'.format('hello','fun'))
hellofun # 0 1表示引數順序

>>>print('{}{}{}'.format('csdn','.','net'))
csdn.net

>>>print("{a[0]}{a[1]}{a[2]}".format(a=['csdn','.','net']))
spkk.cn # list

>>>print('{dict[host]}{dict[dot]}{dict[domain]}'.format(dict={'host':'www','domain':'csdn.net',"dot":'.'}))
>www.csdn.net #dict
>>>print('{a}{b}'.format(a='python',b='3'))
python3
>>>print('{who} {doing} {0}'.format('python',doing='like',who='I'))I like python