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

原文地址:https://www.cnblogs.com/lczmx/p/12213547.html