说到格式化输出就要先说说print函数了
python的格式化输出就是对python的字符串进行一系列的操作,从而使字符串在屏幕中显示一定的格式。常见的格式化有字符串拼接、对齐。
% 形式
使用 % 进行字符格式化时要提前定义好一个模板
模板其实就是一个带有 % 号和一个有特殊意义的字母的字符串,定义好模板后才能对进行字符串格式化用 % 号进行格式化
如:
content = "hello %s" # 模板 print(content % "Alex") # 进行格式化 # ############ 结果 ############## # hello Alex
% 后面的特殊的字母
-
%s 字符串 (采用__str__的显示)
-
%r 字符串 (采用__repr__的显示)
-
%c 单个字符
-
%b 二进制整数
-
%d 十进制整数
-
%i 十进制整数
-
%o 八进制整数
-
%x 十六进制整数
-
%e 指数 (基底写为e)
-
%E 指数 (基底写为E)
- %% 字符"%"
- %[.2]F或f 浮点数 # .2为输出的小数点 ([ ]为可选),默认6位
- %g 指数(e)或浮点数 (根据显示长度)
- %G 指数(E)或浮点数 (根据显示长度)
可以用如下的方式,对格式进行进一步的控制:
%[(name)][flags][width].[precision]特殊字母
(name)为命名
flags可以有+,-,' '或0。+表示右对齐。-表示左对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充。
width表示显示宽度
precision表示小数点后精度
如:
print("%+10x" % 10) # 右对齐, 宽度为10 print("%04d" % 5) # 宽度为4, 为充满部分用0填充 print("%6.3f" % 2.3)
format 方法
format方法和 Formatter类共享相同的格式字符串语法(虽然对于 Formatter来说,其子类可以定义它们自己的格式字符串语法)。 格式字符串包含有以花括号 {}
括起来的“替换字段”。 不在花括号之内的内容被视为字面文本,会不加修改地复制到输出中。 如果你需要在字面文本中包含花括号字符,可以通过重复来转义: {{
}}
。
使用format方法也和%方法一样都需要一个模板,其格式如下:
"{index/key:[填充][对齐][宽度][数字分隔][精度][类型]}"
index/key
index为format参数的位置,如:
print("{1} {0} {2}".format("b","a","c")) # a b c
假如传入参数为键值对时,key 为 键值对的键,如:
print("{a} {b} {c}".format(b="bb",a="aa",c="cc")) #aa bb cc
# 等同于:
print("{a} {b} {c}".format(**{"b": "bb", "a": "aa", "c": "cc"}))
当index或key填写时,format会根据占位符{}里面的值,去format的参数中取出对应的值,并放入到占位符中。而不会和%方法一样必须根据位置传参数。
除了可以指定format的参数次序外,使用format方法可以指定字符串输出的格式。
在format中在占位符写上冒号“:”表示要使用format的控制字符串输出的格式。
填充
当设置了宽度并且宽度大于传入数据长度时,我们可以指定一个字符作为空白部分的填充字符。如:
print("{:-<20}".format("hello")) #hello---------------
"{:-<20}" 表示宽度设置20,左对齐,空白部分以“-”填充。
注意:使用填充时要保证有对齐方式
对齐
format的对齐方式特别简单,如下
< : 左对齐
> : 右对齐
^ : 居中
宽度
为一个数字,当设置的宽度小于数据的长度时,设置宽度将不起作用。
数字分隔符
即千位分隔符'',',当数字为一个数字时,可以加入逗号表示使用千位分隔符,使用后 10000 ====> 10,000
print("{:,}".format(10000000)) #10,000,000
注意:format的参数必须为一个数字,否者会报错。
精度
和上一个一样,精度也是对于数字类型的数据来说的,使用"." + "精度数字" + "f" (浮点数数据类型) ,指定精度(小数点位数)
print("{:.2f}".format(10))
#10.00
print("{:.6f}".format(3.14159265))
#3.141593
print("{:.0f}".format(3.14159265))
#3
类型
# +++++++++++ 进制 +++++++++++++ # ########### 二进制 ############ print('{:b}'.format(15)) #1111 # ########### 八进制 ############ print('{:o}'.format(15)) #17 # ########### 十进制 ############ print('{:d}'.format(15)) #15 # ########### 十六进制 ############ print('{:x}'.format(15)) #f print('{:#x}'.format(15)) #0xf print('{:#X}'.format(15)) #0XF # ++++++++++++ 格式 +++++++++++++++ # ########### 百分比格式############ print("{:.2%}".format(0.45)) #45.00% # ########### 指数记法格式 ############ print("{:.2e}".format(10000000000000000000)) #1.00e+19
注: 更多的format格式规格迷你语言,请看 官方文档
f-strings方法
这是Python的一种新的格式化方法,利用{}代替%
name = "李刚" print(f"我爸是{name}!")
这种方法相对于一般的%方法来说,实用性更好。
注意:f-string方法对于python的早期版本并不支持