Python格式化输出
说到格式化输出就要先说说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 |
浮点数 # .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的早期版本并不支持
本文来自博客园,作者:403·Forbidden,转载请注明原文链接:https://www.cnblogs.com/lczmx/p/12213547.html