自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501
语法介绍
format()可以对数据进行格式化处理操作,语法如下:
format(value, format_spec)
format_spec为格式化解释。当参数format_spec为空时,等同于函数str(value)的方式。value为要转换的数据。format_spec可以设置非常复杂的格式转换参数,实现比较完备的数据格式处理模板。format_spec的编写方式如下形式:
format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]
format_spec格式控制符可以分为文字对齐、填充值、标志设置、格式化、类型转换、千位符(数字分组)等主要应用。细化分类说明如图1所示。
图1 format_spec格式控制符细化分类
主要参数说明:
1)fill(填充值):此处可以填写任何字符,通常与align、width一起使用,实现指定位数字符填充,通常格式如图2所示,填充效果及位置如图3所示。
图2 fill 填充格式
图3 fill 填充格式
通常用0、*、#等进行填充。如果不写填充值,则使用默认填充值,默认填充值为空格。代码如下:
print(format(81,'@<10')) # 用@填充,宽度为10个空格
print(format(81,'@>10')) # 用@填充,宽度为10个空格
输出结果为:
81@@@@@@@@
@@@@@@@@81
2)align(对齐方式):指在width(数字宽度)内输出时的对齐方式,分别使用<、>、^和=四个符号表示左对齐、右对齐、居中对齐和数字填充(只用于数字,在符号后进行补齐)。
3)width(数字宽度):指设定输出字符宽度,如果数据的实际位数比width指定宽度值大,则使用数据实际的长度。如果该值的实际位数小于指定宽度,则位数将设定的fill值填充或设定的0值填充,如果没有设置填充值,则用空格填充。
s = "PYTHON"
print(format(s,'10')) # 没有标志符,如果是字符串则默认左对齐,不足宽度部分默认用空格填充
print(format(81.23,'10')) # 没有标志符,如果是数字则默认右对齐,不足宽度部分默认用空格填充
print(format(s,'0>10')) # 右对齐,不足指定宽度部分用0号填充
print(format(s,'>04')) # 右对齐,因字符实际宽度大于指定宽度4,不用填充
print(format(s,'*>10')) # 右对齐,不足部分用“*”号填充
print(format(s,'>010')) # 右对齐,不足部分用0号填充
print(format(s,'>10')) # 右对齐,默认用空格填充
print(format(s,'<10')) # 左对齐,默认用空格填充
print(format(s,'<010')) # 左对齐,不足部分用0号填充
print(format(s,'@^10')) # 中间对齐,不足部分用“@”填充,宽度为10个空格
print(format(81.23,'0<10')) # 左对齐,不足部分用0号填充
print(format(81.23,'@^10')) # 右对齐,不足部分用“@”填充
print(format(81.23,'0>10')) # 右对齐,不足部分用0号填充
print(format(-81.23,'0=10')) # 右对齐,负号后面不足部分用0号填充,
输出结果为:
PYTHON
81.23
0000PYTHON
PYTHON
****PYTHON
0000PYTHON
PYTHON
PYTHON
PYTHON0000
@@PYTHON@@
81.2300000
@@81.23@@@
0000081.23
-000081.23
4)Precision(精度):精度由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。 Precision(精度)通常和Type(类型)配合起来使用。
5)Type(类型):表示输出字符串、整数和浮点数类型的格式规则,默认为字符型s。对于整数类型,输出格式包括7 种:
l b: 输出整数的二进制方式;
l c: 输出整数对应的 Unicode 字符;
l d: 输出整数的十进制方式;
l n: 输出整数的十进制方式;
l o: 输出整数的八进制方式;
l x: 输出整数的小写十六进制方式;
l X: 输出整数的大写十六进制方式;
对于浮点数类型,输出格式包括7种:
l e: 输出浮点数对应的小写字母 e 的指数形式;
l E: 输出浮点数对应的大写字母 E 的指数形式;
l f: 输出浮点数的浮点表示形式,默认保留6位小数
l F: 输出浮点数的浮点表示形式,默认保留6位小数,无穷大转换成大写字母'INF'
l g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)。
l G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)。
l %: 输出浮点数的百分形式。
快用锦囊
锦囊1 格式化字符
格式化字符主要包括截取字符串,字符串对齐方式显示,填充字符串等几个方面,下面举例如下:
print(format('PYTHON','M^20.3')) # 截取3个字符,宽度为20居中,不足用‘M’填充
print(format("PYTHON",'10')) # 默认居左显示,不足部分用‘ ’填充
print(format('mingrisoft.com','.3')) # 截取3个字符,默认居左显示
print(format("PYTHON",'>10')) # 居右显示,不足部分用‘ ’填充
s='mingrisoft.com'
print(format(s,'0>20')) # 右对齐,不足指定宽度部分用0号填充
print(format(s,'>4')) # 右对齐,因字符实际宽度大于指定宽度4,不用填充
print(format(s,'*>20')) # 右对齐,不足指定宽度部分用*号填充
print(format(s,'>020')) # 右对齐,指定0标志位填充
print(format(s,'>20')) # 右对齐,没指定填充值,用默认值空格填充
print(format(s,'+^30')) # 居中对齐,用+号填充不足部分
输出效果为:
MMMMMMMMPYTMMMMMMMMM
PYTHON
min
PYTHON
000000mingrisoft.com
mingrisoft.com
******mingrisoft.com
000000mingrisoft.com
mingrisoft.com
++++++++mingrisoft.com++++++++
锦囊2 生成数据编号
利用format()函数实现数据编号。对数据进行编号,也是对字符串格式化操作的一种方式,使用format()方法可以对字符串进行格式化编号。只需设置填充字符(编号通常设置0),设置对齐方式时可以使用<、>和^符号表示左对齐、右对齐和居中对齐,对齐填充的符号在“宽度”范围内输出时填充,即可。对数字1进行3位编号,右对齐,需要设置format()方法的填充字符为0,对齐方式为右对齐,宽度为3。具体代码为:
输出结果为:
001
print(format(1,'>03'))
print(format(15,'0>5'))
输出结果为:
001
00015
要生成的编号通常比较复杂,如根据当天的日期建立编号,或者批量生成编号,或者将给定的批量数据中的数字转换成位数固定的编号,下面给出实现如上编号的实现方法:
import datetime
# 时间+编号
wx=datetime.datetime.now().date()
now=datetime.datetime.now()
print(str(wx),format(1,'0>3')) # 年月日 +3位编号
print(format(now,'%Y-%m-%d'),format(1,'0>3')) # 年月日 +3位编号
print(format(now,'%Y%m%d'),'NO'+format(1,'0>3')) # 年月日+NO+3位编号
print(format(now,'%d'),'NO'+format(1,'0>3')) # 日期+NO+3位编号
print(format(now,'%H%M'),'NO'+format(1,'0>3')) # 时钟+分 +NO+3位编号
输出为:
2019-07-05 001
2019-07-05 008
20190705 NO008
05 NO008
2115 NO008
# 批量生成编号
for i in range(1,6):
print(format(i,'0>2'))
01
02
03
04
05
# 格式化列表编号
# 对已有非编号数字进行格式化编号
nba={1:'伦纳德',2:'哈登',3:'乔治'}
for key,value in nba.items():
print(format(key,'0>3'),value)
结果输出为:
001 伦纳德
002 哈登
003 乔治
要实现嵌套编号,如A001-A005,B001-B005,C001-005的嵌套编号。代码如下:
for i in range(65,69):
for j in range(1,6):
data=chr(i)+format(j,'0>3')+' '
print(data,end='')
print()
结果输出如下: