📜  Python | 输出格式化 output format

📅  最后修改于: 2020-01-13 05:20:06             🧑  作者: Mango

有几种方式可以显示程序的输出,可以以人类可读的形式打印数据,也可以将数据写入文件以备将来使用。有时,用户通常希望更多地控制输出的格式,而不是简单地打印以空格分隔的值。有几种格式化输出的方法。

  • 要使用格式化的字符串文字,请在开头的字符串引号或三引号之前使用f或F开头。
  • 字符串的str.format()方法可帮助用户获得更出色的输出。
  • 用户可以通过使用字符串切片slice和串联操作,来创建用户所需的任何布局,从而完成所有字符串处理。字符串类型有一些方法可以执行有用的操作,以将字符串填充到给定的位置。

使用字符串模运算符(%)格式化输出:
 % 运算符还可用于字符串格式化。在Python中,没有printf()函数,但printfle的类似功能包含在Python中。为此,%字符串类将模运算符重载以执行字符串格式化。因此,它通常称为字符串取模(有时甚至称为模数)运算符。
字符串模运算符( % )在Python(3.x)中仍然可用,并且用户在广泛使用它。但是如今,格式化的旧样式已从该语言中删除

# Python 程序,展示如何
# 使用模运算符%打印漂亮输出
# 打印整形和浮点数
print("芒果 : % 2d, Portal : % 5.2f" %(1, 05.333))
# 打印整型
print("Total students : % 3d, Boys : % 2d" %(240, 120))
# 打印八进制数
print("% 7.3o"% (25))
# 打印指数
print("% 10.3E"% (356.08977))

输出:

芒果 :  1, Portal : 5.33
Total students : 240, Boys : 120
031
3.561E+02


在我们的示例中有两个:“%2d”和“%5.2f”。格式占位符的常规语法为:

%[flags][width][.precision]type

让我们看一下示例中的占位符:

  • 第一个占位符“%2d”用于元组的第一个组成部分,即整数1。该数字将打印2个字符。由于1仅由一位数字组成,因此输出将用1个前导空格填充。
  • 第二个“%8.2f”是浮点数的格式描述。像其他占位符一样,它也带有%字符。随后是字符串应包含的总位数。该数字包括小数点和所有数字,即小数点之前和之后。
  • 我们的浮点数05.333必须使用5个字符格式化。数字或精度的小数部分设置为2,即占位符中“.”后面的数字。最后,占位符的最后一个字符“ f”代表“ float”。

使用format方法格式化输出:
Python(2.6)中添加了format()方法。字符串的格式化方法需要更多的人工。用户用{}来标记变量将被替换的位置,并可提供详细的格式化指令,但用户还需要提供要格式化的信息。通过此方法,我们可以通过位置格式将输出中的元素连接起来。例如
代码1:

# Python代码,展示format()如何使用
# 使用format()
print('I love {} "{}!"'.format('芒果', '文档'))
# 使用format()
print('{0} and {1}'.format('芒果', 'Portal'))
print('{1} and {0}'.format('芒果', '芒果'))

输出:

I love 芒果 "文档!"
芒果 and Portal
Portal and 芒果

方括号和其中的字符(称为格式字段)被传递给format()方法的对象替换。括号中的数字可用于表示传递给format()方法的对象的位置。
代码2:

# Python代码,展示format()如何使用
# 结合位置和关键字参数
print('第一个portal是 {0}, {1}, and {other}.'
     .format('芒果', 'For', other ='文档'))
# 使用format()和数字联合
print("芒果 :{0:2d}, Portal :{1:8.2f}".
      format(12, 00.546))
# 改变位置参数
print("第二个参数: {1:3d}, 第一个参数: {0:7.2f}".
      format(47.42, 11))
print("芒果: {a:5d},  Portal: {p:8.2f}".
     format(a = 453, p = 59.058))

输出:

第一个portal是 芒果, For, and 文档.
芒果 :12, Portal :    0.55
第二个参数:  11, 第一个参数:   47.42
芒果:   453, Portal:    59.06

下图和一个示例用法描述了format方法如何处理位置参数:

代码3:

# Python代码,展示format()如何结合dictionary使用
tab = {'芒果': 4127, 'for': 4098, '芒果': 8637678}
展示format()如何结合dictionary使用
print('芒果: {0[芒果]:d}; For: {0[for]:d}; '
    '文档: {0[芒果]:d}'.format(tab))
data = dict(fun ="芒果文档", adj ="Portal")
# using format() in dictionary
print("我爱 {fun} computer {adj}".format(**data))

输出:

芒果: 4127; For: 4098; 文档: 8637678
我爱 芒果文档 computer Portal

使用String方法格式化输出:
在此输出中,使用字符串切片和串联操作格式化。字符串类型具有一些方法,可以帮助以一种更好的方式格式化输出。有些格式化输出的函数是: str.ljust()str.rjust()str.centre() 

# Python代码,展示format()如何结合dictionary使用
cstr = "我爱芒果文档"
# 打印string,居中
print ("居中string,两边填充: ")
print (cstr.center(40, '#'))
# 打印string,左对齐,使用‘-’填充
print ("左对齐的string : ")
print (lstr.ljust(40, '-'))
# 打印string,右对齐,使用‘-’填充
print ("右对齐的string : ")
print (rstr.rjust(40, '-'))

输出:

居中string,两边填充:
##########我爱芒果文档##########
左对齐的string :
我爱芒果文档--------------------
右对齐的string :
--------------------我爱芒果文档