天天看点

Python格式化函数 | format()

介绍Python中format()函数的主要用法

格式化字符串:

基本格式:<模板字符串>.format(<逗号分隔的参数>)

现有 : nums = [1, 3, 5, 7, 9, 0, 2, 4, 6, 8]

要求输出nums中元素个数.最大值.最小值

Python格式化函数 | format()
nums = [1, 3, 5, 7, 9, 0, 2, 4, 6, 8]
len_,max_,min_ = len(nums),max(nums),min(nums)

#1:字符串拼接
print('nums有'+str(len_)+'个元素,最大值'+str(max_)+',最小值'+str(min_))
#2: %转义
print('nums有%d个元素,最大值%d,最小值%d' % (len_,max_,min_))
#3: format函数 : 接受不限个参数,位置可以不按顺序
print('nums有{0}个元素,最大值{1},最小值{2}'.format(len_,max_,min_))

#通过字典设置参数
dict = {'len':len_,'max':max_,'min':min_}
print('nums有{len}个元素,最大值{max},最小值{min}'.format(**dict))
#通过列表索引设置参数
target = [len_, max_, min_]
print('nums有{0[0]}个元素,最大值{0[1]},最小值{0[2]}'.format(target))

'''以上代码都能输出  nums有10个元素,最大值9,最小值0,
   但相对来说format()更美观省事,功能也更强大'''
           

格式化数字:

格式控制信息:format()方法中<模板字符串>的槽除了包括参数序号,还可以包括格式控制信息。此时,槽的内部样式如下: {<参数序号>: <格式控制标记>}

其中,**<格式控制标记>用来控制参数显示时的格式,包括:<填充><对齐><宽度>,<.精度><类型>**6 个字段,这些字段都是可选的,可以组合使用。

Python格式化函数 | format()
1:保留小数点后2位 : {:.2f}
import math
PI = math.pi   #PI --> 3.141592653589793
val = -2018.1229
print('{0:.2f}  {1:.2f}'.format(PI,val))    
#输出  3.14  -2018.12
           
2:带符号保留小数点后两位 : {:+.2f}
print('{0:+.2f}  {1:+.2f}'.format(PI,val))     
#输出  +3.14  -2018.12
           
3:舍弃小数 : {:.0f}
print('{0:.0f}  {1:.0f}'.format(PI,val)) 
#输出  3  -2018
           
4:千位分隔符–> {:,}
print('{0:,}'.format(10000000))
#输出  10,000,000
           

5:设置宽度为6,左填充 --> {0:>6d}

宽度为6,右填充x --> {:x<6d}

print('{0:*>6d}  {1:x<6d}'.format(2018,1229))
#输出  **2018  1229xx
           

6:百分比格式 --> {:.2%} ,

指数格式 : {:.2e}

print('{0:.2%}  {1:.2e}'.format(0.25,10000000))
#输出  25.00%  1.00e+07
           
7:设置对齐 : <左对齐 >右对齐 ^居中
print('{0:*<10d}  {1:*<10d}'.format(2018,1229))  #2018******  1229******
print('{0:*^10d}  {1:*^10d}'.format(2018,1229))  #***2018***  ***1229***
print('{0:*>10d}  {1:*>10d}'.format(2018,1229))  #******2018  ******1229
           

8:进制转换

{:d} --> 十进制,

{:b} --> 二进制,

{:#b} --> 带前缀二进制,

{o} --> 八进制,

{:#o} --> 带前缀八进制,

{:x} --> 十六进制

{:#x}–> 带前缀十六进制

{:#X} --> 带前缀大写十六进制

#用bin()转二进制会带有前缀0b,但format()不会
d2b = bin(255)
use_format = format(255,'b')
print(d2b +'      '+use_format)  #输出: 0b11111111      11111111

print('{:d}'.format(255))    #255
print('{:b}'.format(255))    #11111111
print('{:#b}'.format(255))   #0b11111111
print('{:o}'.format(255))    #377
print('{:#o}'.format(255))   #0o377
print('{:x}'.format(255))    #ff
print('{:#x}'.format(255))   #0xff
print('{:#X}'.format(255))   #0XFF
           
Python格式化函数 | format()

关注微信公众号,获取更多资料