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的早期版本并不支持

posted @ 2020-01-19 14:29  403·Forbidden  阅读(1653)  评论(0编辑  收藏  举报