语法格式
<模板字符串>.format(<逗号分隔的参数>)
讯享网
槽中格式控制标记 | .
- | :-
:| 引导符号
<填充> | 用于填充的单个字符
<对齐> | <左对齐;>右对齐;^居中对齐
<宽度> | 槽的设定输出宽度
<,>| 数字的千分位分隔符,适用于整数和浮点数
<.精度> | 浮点数小数部分的精度,或字符串的最大输出长度
<类型> | 整数类型 b/c/d/o/x/X;浮点数类型e/E/f/%(具体戳这里 > 类型格式设置)
使用多个标记是的排列顺序也是按这个表的顺序。
填充&对齐&宽度
三者经常是配合起来使用的,有设置填充样式时一定要设置对齐方式否则会报错。
讯享网>>> print("{:-^20}".format("哈哈")) #一个汉字=一个字符 ---------哈哈--------- >>> print("{:->20}".format("哈哈")) ------------------哈哈 >>> print("{:-<20}".format("哈哈")) 哈哈------------------
关于设置宽度后的默认对齐方式:
>>> "{:20}".format() ' ' >>> "{:20}".format("哈哈") '哈哈 ' # 没有看到官方说明,但是试了一下应该是数字默认右对齐 字符串默认左对齐
无意中发现等号也可以有右对齐效果(format的参数是数字时):
讯享网>>> print("{:*=20,}".format()) *123,456,789 >>> print("{:*=20}".format()) * >>> "{:=20}".format() ' '
千位分隔符
数字还可以加千位分隔符效果:
>>> print("{:,}".format()) 12,345,678 >>> print("{:,}".format(.78)) 123,456.78 >>> print("{:*^20,}".format()) *12,345,678* >>> print("{:*>20,}".format()) *12,345,678 >>> print("{:*<20,}".format()) 12,345,678
之前不知道python输出本身有格式模板结果千分位分隔符的输出自己生写的,其实一句话就可以写完:
讯享网n = input("输入一个整数:") if len(n) > 3: cut=len(n)//3-(len(n)%3==0)*1 else: cut = 0 head = len(n) - cut*3; new = n[0:head] for i in range(cut): new = new + "," + n[head:head+3]; head = head+3; print("{0:->20}".format(new)) # 一句话概括:print("{:->20,}".format(eval(input("输入一个整数:"))))
精度
设置浮点数精度(设置精度一定要设置浮点数类型):
>>> "{:.4f}".format(123) '123.0000' >>> "{:.4e}".format(123) '1.2300e+02' >>> "{:=^10.4f}".format(123) '=123.0000=' # 两个报错 >>> "{:.4x}".format(123) Traceback (most recent call last): File "<pyshell#83>", line 1, in <module> "{:.4x}".format(123) ValueError: Precision not allowed in integer format specifier >>> "{:=^10.4}".format(123) Traceback (most recent call last): File "<pyshell#75>", line 1, in <module> "{:=^10.4}".format(123) ValueError: Precision not allowed in integer format specifier
限制字符串输出长度:
讯享网>>> "{:=^10.4}".format("hahahahahahahahaha") '===haha===' >>> "{:=^10.4}".format("哈哈哈哈哈哈哈哈哈") '===哈哈哈哈==='
类型
类型格式设置
字符 | 含义
- | :-
整数 |
b | binary。输出整数的二进制形式。
o | octal。输出整数的八进制形式。
d | decimal。输出整数的十进制形式。
x | hexademical。输出整数的小写十六进制形式。
X | hexademical。输出整数的大写十六进制形式。
c | charactor。输出整数对应的Unicode字符。
浮点数 | * 这一类的格式字符好像和千分位分隔符冲突
e | 幂形式(科学计数法)。输出浮点数的小写字母e的指数形式。例子: 1.03 e + 08 = 1.03 ∗ 1 0 8 1.03e+08 = 1.03*10^8 1.03e+08=1.03∗108
E| 幂形式(科学计数法)。输出浮点数的大写字母e的指数形式。
f | float。输出浮点数的标准浮点形式(六位小数)。
% | 百分数。将数值乘以100然后以’f’格式打印,值后面会有一个百分号。
其他 |
g | general。输出其固定有效数字位数(可以设置,格式和设置精度一样,默认是六位)的小数形式,
数字过大(数字本身有效数字位数大于设置的有效数字位数)则用幂形式显示。
n |number。基本和’g’相同。不同的是它会根据区域设置插入数字分隔符。
不同进制:
>>> print("默认{0} 二进制{0:b} 八进制{0:o} 十进制{0:d} 小写十六进制{0:x} 大写十六进制{0:X}".format(0b1111)) 默认15 二进制1111 八进制17 十进制15 小写十六进制f 大写十六进制F >>> print("默认{0} 二进制{0:b} 八进制{0:o} 十进制{0:d} 小写十六进制{0:x} 大写十六进制{0:X}".format(0o15)) 默认13 二进制1101 八进制15 十进制13 小写十六进制d 大写十六进制D >>> print("默认{0} 二进制{0:b} 八进制{0:o} 十进制{0:d} 小写十六进制{0:x} 大写十六进制{0:X}".format(15)) 默认15 二进制1111 八进制17 十进制15 小写十六进制f 大写十六进制F >>> print("默认{0} 二进制{0:b} 八进制{0:o} 十进制{0:d} 小写十六进制{0:x} 大写十六进制{0:X}".format(0x15)) 默认21 二进制10101 八进制25 十进制21 小写十六进制15 大写十六进制15
Unicode:>Unicode 编码表
讯享网>>> "{:c}".format(58) ':'
浮点数:
>>> print("小写幂形式{0:e} 大写幂形式{0:E} 标准浮点形式{0:f} 百分数{0:%}".format(0.745)) 小写幂形式7.e-01 大写幂形式7.E-01 标准浮点形式0. 百分数74.% >>> print("{0:.2e} = {0:.2%}".format(0.745)) 7.45e-01 = 74.50% >>> print("{:f,}".format()) Traceback (most recent call last): File "<pyshell#144>", line 1, in <module> print("{:f,}".format()) ValueError: Invalid format specifier
讯享网>>> "{:g}".format(12345) ← '12345' >>> "{:g}".format() '1.23457e+08' >>> "{:.3g}".format() '1.23e+08' >>> "{:.12g}".format(12.) ← '12.'
显示符号
>>> "{}".format(-1) '-1' >>> "{}".format(+1) '1' >>> "{:+}".format(+1) '+1' >>> "{:+20.3f}".format() ' +.000' # 两个报错 >>> "{:+=>20.3f}".format() Traceback (most recent call last): File "<pyshell#132>", line 1, in <module> "{:+=>20.3f}".format() ValueError: Invalid format specifier >>> "{:+*>20.3f}".format() Traceback (most recent call last): File "<pyshell#136>", line 1, in <module> "{:+*>20.3f}".format() ValueError: Invalid format specifier # 所以可以得出:同时设置正负号和符号填充是不可以的,但是可以这样 ↓ >>> "{:=>20}".format("{:+.3f}".format()) '========+.000'

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/31032.html