Python中如何实现数字的格式化输出?


在Python3版本前提下 。实现数字格式化最最最常用的是format方法一、format语法

Python中如何实现数字的格式化输出?

文章插图
● 语法:
格式化字符串的函数 str.format() 。返回字符串类型
●其中 str的基本语法是通过 {} 和 : 来代替以前的 %
: 号后面带填充的字符
Python中如何实现数字的格式化输出?

文章插图
简称:填齐度 。隔精类
二、Python实例说明
Python中如何实现数字的格式化输出?

文章插图
● 保留小数点后两位
print(\"{:.2f}\".format(3.1415926))# 输出结果是:3.14
● 带符号保留小数点后两位
# + 表示在正数前显示 + 。负数前显示 - print(\"{:+.2f}\".format(3.1415926))# 输出结果是:+3.14print(\"{:+.2f}\".format(-3.1415926))# 输出结果是:-3.14
● 不带小数
print(\"{:.0f}\".format(3.1415926))# 输出结果是:3
● 数字补零 (填充左边, 宽度为2)
# ^, <, > 分别是居中、左对齐、右对齐 。后面带宽度print(\"{:0>2d}\".format(3))# 输出结果是:03
● 数字补x (填充右边, 宽度为11)
print(\"{:x<11d}\".format(1552742))# 输出结果:1552742xxxx
● 以逗号分隔的数字格式
print(\"{:,}\".format(1000228))# 输出结果:1,000,228
● 百分比格式
print(\"{:.2%}\".format(0.258))# 输出结果:25.80%
● 指数记法
print(\"{:.2e}\".format(1200))#输出结果: 1.20e+03
● 进制转换
b、d、o、x 分别是二进制、十进制、八进制、十六进制
Python中如何实现数字的格式化输出?

文章插图
三、展望合理利用format函数 。在Python处理字符串时将如履平地 。赶紧get这个Python小技巧吧 。
Python中如何实现数字的格式化输出?

文章插图
其他观点:
从Python 3.6开始 。引入F-string 格式化字符串新语法 。它相对于 %-formatting、 str.format() 格式化方式 。它不仅更易读 。更简洁 。不易出错 。而且速度更快 。我们就以F-string 来介绍如何格式化数字 。
F-string 采用 {content:format} 的形式设置字符串格式 。采用默认格式时则不需要指定 {:format} 。其中 content 是替换并填入字符串的内容 。可以是变量、表达式或函数等 。format 是格式描述符 。
接下来我们介绍一下数字的自定义格式 。包含对齐、宽度、符号、补零、精度、进制等 。
对齐格式描述符
Python中如何实现数字的格式化输出?

文章插图
Python中如何实现数字的格式化输出?

文章插图
数字符号格式描述符
Python中如何实现数字的格式化输出?

文章插图
代码示例如下:
Python中如何实现数字的格式化输出?

文章插图
宽度与精度格式描述符
Python中如何实现数字的格式化输出?

文章插图
0width格式描述符不能用于复数和非数值类型 。width.precision格式描述符不能用于整数类型 。
width.precision格式描述符可以用于不同格式类型的浮点数、复数时的含义不同:用于 f、F、e、E 和 % 时 。precision 指定的是小数点后的位数 。用于 g 和 G 时 precision 指定的是有效数字位数(小数点前位数+小数点后位数) 。
width.precision 除浮点数、复数外还可用于字符串 。此时 precision 含义是只使用字符串中前 precision 位字符 。
基本格式类型如下:
Python中如何实现数字的格式化输出?

文章插图
代码示例如下:
Python中如何实现数字的格式化输出?

文章插图
千位分隔符格式描述符
Python中如何实现数字的格式化输出?

文章插图
若不指定','。则F-string将不使用任何千位分隔符 。此为默认设置 。',' 仅适用于浮点数、复数与十进制整数 。对于浮点数和复数 。分隔的是小数点前的数位 。
Python中如何实现数字的格式化输出?

文章插图
其他观点:
格式化输出单个数字的时候 。可以使用内置的函数 。比如:
>>> x = 1234.56789
>>> # Two decimal places of accuracy
>>> format(x, '0.2f') #无空格 。小数保留2位
'1234.57'
>>> # Right justified in 10 chars, one-digit accuracy
【Python中如何实现数字的格式化输出?】>>> format(x, '>10.1f') #数字输出靠右 。总计长度为10 。小数保留1位

推荐阅读