摘要: Python中 %s 、 %r
Python中也有类似于C中的 printf()格式输出,使用 % 运算符,格式:
格式标记字符串 % 要输出的值组
右边的”值组“若有两个及以上的值则需要用小括号括起来,中间用逗号隔开。
重点看左边部分。其最简单的形式为: %code。 ,其中的code可以有多种,而在Python中,所有的输入都可以转换为 string 类型,所以没有特殊要求时,可以使用 ”%s“ 标记。
>>>'%s %s %s' % (1,2.3, ['one', 'two', 'three'])
输出为:
"1 2.3 ['one', 'two', 'three']"
>>>
输出按照左边的标记输出。第一个和第二个是数字,同样可以输出。该过程中,Python发现第一个值 ‘1’ 不是 string 类型时调用 str() 函数来进行输出。第二个数值同理输出。
常用的还有 repr() 函数,该函数可以用 %r 标记。除此之外,还有很多类似的code:
整型数: %d
无符号整型数:%u
八进制: %o
十六进制: %x %X
浮点数: %f
科学计数法: %e %E
根据数值的不同,自动选择 %e 或 %f 。同 ‘/’ 用来进行转义一样,‘%’ 只用来进行标记格式。若要在格式标记中输出 % 本身,可以用 ‘%%’ 来表示。
>>> '%s' %'%1'
'%1'
>>>
下面介绍几个复杂的例子:
>>> '%1.2f' %1.235
'1.24'
>>>
f前面的1.2代表:总共输出长度为1个字符,其中小数为2位。
>>> '%06.2f' %1.235
'001.24'
>>>
%06.2f 表示:若输出的位数不足6位,则用0 补齐。其中 小数点 也占用一个字符位。类似的还有 -、+,
‘-’表示左对齐,‘+’表示在证书前面标记 ‘+’,默认不加。
>>> '%(name)s:%(score)03.1f' %{'score':95, 'name':'Tom'}
'Tom:95.0'
>>>
该形式只适用于输出的内容为 dictionary (Python一种格式化数据类型)时,左面小括号中的(name) 和 (score) 对应于后面键值中相应内容。
以上的例子表明,‘格式标记字符串’ 中标记的顺序与 '要输出值组'的值是一一对应的。