2025年【Python】输出格式化:关于format函数

【Python】输出格式化:关于format函数语法格式 lt 模板字符串 gt format lt 逗号分隔的参数 gt 槽中格式控制标记 引导符号 填充 用于填充的单个字符 对齐 左对齐 右对齐 居中对齐 宽度 槽的设定输出宽度 lt gt 宽度 左对齐 对齐 填充

大家好,我是讯享网,很高兴认识大家。
语法格式
<模板字符串>.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.03108
    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' 
小讯
上一篇 2025-02-15 09:08
下一篇 2025-02-15 13:23

相关推荐

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