格式化是指把数据填充到预先定义的文本模板中,并返回一个新的字符串。这里介绍 Python 对字符串做格式化处理的两种常见方式:
- % 格式化操作符:从 Python 诞生起就开始使用的格式化操作符 %
- 字符串的 format() 方法:Python 2.6 和 Python 3.0 引入的 format 函数 / 方法
总体而言,% 百分号方式比较老,而 format 方式是比较先进的,企图替代古老的方式,目前两者共存,可以根据自己的实际需要来选择。
一、% 格式化操作符
% 格式化操作符的写法来自 C 语言的 printf 函数,Python 及其他一些编程语言都依照了相同的写法来定义自己的格式字符串。
提示:% 操作符左边的文本模板被称为“格式字符串”。
% 的基本格式如下:
%[(name)][flags][width].[precision] typecode
- (name) :可选,用于选择指定的 key
- flags:可选,可供选择的值有:
– + 右对齐:正数的加正号,负数的加负号
– - 左对齐:正数前没有负号,负数前加负号 - width:可选,占有宽度
- precision:可选,小数点后保留的位数
- typecode: 必选,类型码
– s,获取传入的对象__str__方法的返回值,并将其格式化到指定位置
– r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
– c,整数:将数字转换成其 unicode 对应的值,10 进制范围为 0 <= i <=1114111
– o,将整数转换成八进制表示,并将其格式化到指定位置
– x,将整数转换成 16 进制,并将其格式化到指定位置
– d,将整数,浮点数转化为十进制表示,并将其格式化到指定位置
二、字符串的 format() 方法
相比于 C 风格的格式字符串,format() 函数 / 方法是 Python 3 添加的高级字符串格式机制,不在使用 % 操作符。具体分为两种:
- 内置的 format() 函数:依次传入需要调整格式的 Python 值,以及该值需要具备的格式,即可实现格式化。
- str.format() 方法,即字符串的 format() 方法:Python 会把 str.format 方法接收的每个值传给内置的 format() 函数,同时找到这个值在格式字符串中对应位置的 {} ,并将其中的格式说明符也传给 format() 函数。
最后,系统会将调用 format() 函数返回的结果(format(key, ‘<10’) 和 format(value, ‘.2f’) )写入整个格式化字符串中 {} 所在的位置。
三、具体示例
示例1
(1)使用% 格式化操作符输出“字符串”和“整数”
temp1 = 'I am %s, age %d' % ('Mary', 18)
print(temp1)
# 输出:I am Mary, age 18
temp2 = 'I am %(x)s, age %(y)d' % {'x':'Mary', 'y': 18}
print(temp2)
# 输出:I am Mary, age 18
(2)使用 str.format() 方法输出“字符串”和“整数”
temp1 = "I am {}, age {}".format('Mary', 18)
print(temp1)
# 输出:I am Mary, age 18
temp2 = "I am {0}, age {1}".format('Mary', 18)
print(temp2)
# 输出:I am Mary, age 18
示例2
(1)使用% 格式化操作符输出“小数”
temp1 = 'My score is %.3f' % 90.500
print(temp1)
# 输出:My score is 90.500
(2)使用 str.format() 方法输出“小数”
temp2 = 'My score is {:f}'.format(90.500)
print(temp2)
# 输出:My score is 90.500000