文章目录
本文主要讲解python中format函数如何格式化数字,如千分位、百分比、保留指定小数位、进制转换等等。
本文只讲解format与数字相关的用法,其他用法可参考本人写的其他文章。
一、format数字格式化语法
1.1、语法格式
str.format():str是指字符串实例对象,常用格式为:''.format()。
1.2、参数格式
更多内容参考官网地址:https://docs.python.org/zh-cn/3/library/string.html#formatspec
'{[index][:[fill]align][sign][#][width][.precision][type]}{......}{......}'.format(),格式中[]内的参数都是可选参数,每个{}都表示是一个待替换的字符串。
index:指定冒号后面出现的参数在format()中的索引值,如果没有,则以format()中的默认顺序自动分配。
fill:指定空白处的填充符。
align:指定数字的对齐方式。
align | 含义 |
---|---|
< | 左对齐,对于大部分对象时为默认 |
> | 右对齐,对于数字时为默认 |
= | 数据右对齐,同时将符号放置在填充内容的最左侧,该选项只对数字类型有效 |
^ | 数据居中,此选项需和 width 参数一起使用 |
请注意,除非定义了最小字段宽度,否则字段宽度将始终与填充它的数据大小相同,因此在这种情况下,对齐选项没有意义。
sign:指定有无符号数 。
sign | 含义 |
---|---|
+ | 正数前面添加 ‘ + ’ ,负数前面加 ‘ - ’ 例如 +3 , -1 。 |
- | 表示正负号仅用于负数(这是默认行为 )。正数前面不添加 ‘ + ’ ,负数前面加 ‘ - ’。例如 3 , -1。 |
space | 正数前面添加 ‘ 空格 ’ ,负数前面加 ‘ - ’ |
# | 对于二进制数、八进制数和十六进制数,使用此参数,各进制数前会分别显示 0b、0o、0x前缀;反之则不显示前缀 |
width:指定输出数据时所占的宽度。
.precision:如果后面存在type参数,则指的是保留小数的位数,如果type参数不存在,则是指有效数字的位数。
type:指定输出数据的具体类型。
type | 含义 |
---|---|
s | 对字符串类型格式化,这是字符串的默认类型,可以省略。 |
% | 显示百分比,默认显示小数点后六位,将数字乘以 100 后面带一个百分号。 |
d | 十进制整数 |
c | 将十进制整数自动转化成对应的Unicode字符 |
b | 将十进制数自动转化成二进制数,并格式化输出 |
o | 将十进制数自动转化成八进制数,并格式化输出 |
x | 十六进制数,a 到 f 小写 |
X | 十六进制数,A 到 F 大写。 在指定 ‘#’ 的情况下,前缀 ‘0x’ 也将被转为大写形式 ‘0X’。 |
e | 转化成科学计数法,并格式化输出 |
E | 科学计数法。 与 ‘e’ 相似,不同之处在于它使用大写字母 ‘E’ 作为分隔字符。 |
f | 转化为浮点数,对 float 采用小数点之后 6 位精度,而对 Decimal 则使用大到足够显示所有系数位的精度。 |
F | 定点表示。 与 ‘f’ 相似,但会将 nan 转为 NAN 并将 inf 转为 INF。 |
g、G | 自适应转化为e或f(E或F),并格式化输出 |
二、基本用法
2.1、进制转换
N = 299
print('{:b}'.format(N))
print('{:c}'.format(N))
print('{:d}'.format(N))
print('{:o}'.format(N))
print('{:x}'.format(N))
print('{:X}'.format(N))
#十进制转化为二进制
print("二进制转化:{:#b}".format(16)) #二进制转化:0b10000
#十进制转化为八进制
print("八进制转化:{:#o}".format(16)) #八进制转化:0o20
#输出内容:
D:\App\python\python3.13.0\python.exe D:\WorkSpace-Python\Test\test3.py
100101011
ī
299
453
12b
12B
2.2、百分比、千分位
#百分比
print('{:%}'.format(0.25)) #输出:25.000000%
#千分位
print('{:,}'.format(180000)) #输出:180,000
2.3、精度、保留小数位
Format中的限定符有更丰富的格式,通过{:}
来表示
精度:指定小数点后面保留多少位
,如果是字符串,则是取长度
。:
号后面设置精度(以.
开始加上精度),然后用f结束,若不是设置,默认为精度为6,自动四舍五入
,可带符号显示数字正负标志。
print('{:.2f}'.format(3.1415926))
print('{:.4}'.format(u'我是小明,爱好旅游'))
print('{:+.2f}'.format(99.1234567)) # 输出 +99.12
print('{:-.2f}'.format(+99.1234567)) # 输出 99.12
print('{:0=+10}'.format(99)) # 右对齐,10位数,不够0填充,同时在数字前面添加正负符号
# 输出
D:\App\python\python3.13.0\python.exe D:\WorkSpace-Python\Test\test3.py
3.14
我是小明
+99.12
99.12
+000000099
2.4、填充与对齐
填充对齐:用^、<、>分别是居中、左对齐、右对齐,符号前表示要填充的字符,符号后表示要填充的长度
print('{:0<10}'.format(18)) # 左对齐,10位数,不够用0填充
print('{:0>10}'.format(18)) # 右对齐,10位数,不够用0填充
print('{:0^10}'.format(18)) # 中间对齐,10位数,不够用0填充
print('{:0=+10}'.format(99)) # 右对齐,10位数,不够0填充,同时在数字前面添加正负符号
#输出:
1800000000
0000000018
0000180000
+000000099
参考或推荐文章:
python format官网地址:https://docs.python.org/zh-cn/3/library/functions.html#format