Python格式化函数 | format()
介绍Python中format()函数的主要用法
格式化字符串:
基本格式:<模板字符串>.format(<逗号分隔的参数>)
现有 : nums = [1, 3, 5, 7, 9, 0, 2, 4, 6, 8]
要求输出nums中元素个数.最大值.最小值
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 个字段,这些字段都是可选的,可以组合使用。
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