一、使用 print() 函数
在 Python 中,print() 函数支持格式化输出,与 C 语言的 printf 类似。
1. 格式化输出字符串和整数
【示例1】输出字符串 AmoXiang,并计算、输出它的字符长度
str1 = "%s.length = %d" % ("AmoXiang", len("AmoXiang"))
print(str1) # 输出AmoXiang.length = 8
% 在字符串中表示格式化操作符,它后面必须附加一个格式化符号,具体说明如下表所示。
%()元组可以包含一个或多个值,如变量或表达式,用来向字符串中%操作符传递值,元组包含元素数量、顺序都必须与字符串中%操作符一一对应,否则将抛出异常。%()元组必须位于字符串的后面,否则无效。如果字符串中只包含一个%操作符,那么也可以直接传递值。例如:
str1 = "AmoXiang.length = %d" % len("AmoXiang")
print(str1) # 输出AmoXiang.length = 8
2. 格式化输出不同进制数
【示例2】使用 print() 函数把数字输出为十六进制、十进制、八进制格式的字符串。
num = 123
# 输出:Hex = 7b Dec = 123 Oct=173
print("Hex = %x Dec = %d Oct=%o" % (num, num, num))
补充:整数类型包括十进制整数、八进制整数、十六进制整数和二进制整数。
十进制的整数不能以 0 开头。八进制整数由 0~7 组成,逢八进一,以 0o 或 0O 开头,例如:0o23十六进制整数由 0~9 以及 a~f 组成,逢十六进一,以 0x 或 0X 开头。例如:0x23二进制整数由 0 和 1组成,逢二进一,以 0b 或 0B 开头。例如:0b101关于进制这个知识点不懂的读者可以点击 进制转换 学习
3. 格式化输出浮点数
【示例3】把数字输出为不同格式的浮点数字符串。
PI = 3.141592653
print("pi1 = %10.3f" % PI) # 总宽度为10,小数位精度为3
print("pi2 = %.*f" % (3, PI)) # *表示从后面的元组中读取3,定义精度
print("pi3 = %010.3f" % PI) # 用0填充空白
print("pi4 = %-10.3f" % PI) # 左对齐,总宽度10个字符,小数位精度为3
print("pi5 = %+f" % PI) # 在浮点数前面显示正号
程序运行结果如下:
在格式化输出数字或字符串时,可以附加辅助指令来完善格式化操作。具体说明如下表所示:
二、使用 str.format() 方法
% 操作符是传统格式化输出的基本方法,从 Python 2.6 版本开始,为字符串数据新增了一种格式化方法 str.format(),它通过 {} 操作符和 : 辅助指令来代替 % 操作符。
【示例1】通过位置索引值
print('{0} {1}'.format('Python', 3.7)) # Python 3.7
print('{} {}'.format('Python', 3.7)) # Python 3.7
print('{1} {0} {1}'.format('Python', 3.7)) # 3.7 Python 3.7
在字符串中可以使用 {} 作为格式化操作符。与 % 操作符不同的是,{} 操作符可以通过包含的位置值自定义引用值的位置,也可以重复引用。
【示例2】通过关键字索引值
# 输出:Amo年龄是18岁。
print('{name}年龄是{age}岁。'.format(age=18, name="Amo"))
【示例3】通过下标进行索引
L = ["Jason", 30]
# 输出:Jason年龄是30岁。
print('{0[0]}年龄是{0[1]}岁。'.format(L))
通过使用 format() 函数这种便捷的 映射 方式,列表和元组可以 打散 成普通参数传递给 format() 方法,字典可以打散成关键字参数给方法。format() 方法包含丰富的格式限定符,附带在 {} 操作符中 : 符号的后面。
1. 填充与对齐
: 符号后面可以附带填充的字符,默认为空格, ^、 分别表示居中、左对齐、右对齐,后面附带宽度限定值。
【示例4】下面示例设计输出 8 位字符,并分别设置不同的填充字符和值对齐方式。
print('{:>8}'.format('1')) # 总宽度为8,右对齐,默认空格填充
print('{:0>8}'.format('1')) # 总宽度为8,右对齐,使用0填充
print('{:a<8}'.format('1')) # 总宽度为8,左对齐,使用a填充
程序运行结果如下:
2. 精度与类型f
【示例5】f 与 float 类型数据配合使用
print('{:.2f}'.format(3.141592653)) # 输出结果:3.14
其中 .2f 表示小数点后面的精度为 2,f 表示浮点数输出。
3. 进制数字输出
【示例6】使用b、d、o、x 分别输出二进制、十进制、八进制、十六进制数字。
num = 100
print('{:b}'.format(num)) # 1100100
print('{:d}'.format(num)) # 100
print('{:o}'.format(num)) # 144
print('{:x}'.format(num)) # 64
4. 千位分隔输出
【示例7】使用逗号(,)输出金额的千分位分隔符。
print('{:,}'.format(1234567890)) # 1,234,567,890
三、详解 format() 函数
format()函数可以对数据进行格式化处理操作。语法格式如下:
format_spec为格式化解释。当参数 format_spec 为空时,等同于函数 str(value) 的方式。value 为要转换的数据。format_ spec 可以设置非常复杂的格式转换参数,生成比较完备的数据格式处理模板。format_spec 的编写方式如下形式:
format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]
format_spec 格式控制符可以分为文字对齐、填充值、标志设置、格式化、类型转换、千位符(数字分组)等主要应用。细化分类说明如下图所示:
参数说明:
(1) fill(填充值):此处可以填写任何字符,通常与align、width一起使用,实现指定位数字符填充,通常格式如图1.2所示,填充效果及位置如图1.3所示。
通常用 0、*、#、@ 等进行填充。如果不写填充