导航

% 格式化

Posted on 2015-08-21 14:00  周一要吃鸡腿  阅读(124)  评论(0编辑  收藏  举报

参考原文:http://developer.51cto.com/art/201003/189039.htm

1. 格式化运算符:%

2. 使用格式:

3. 说明

(1)在python格式化中,所有东西都可以转换成string类型(即使用%s 可以格式化所有数据)因此,如果没有什么特殊需求完全可以全部使用’%s‘来标记。

例如 %s 可以格式化整型数据:

>>> i = 17
>>> t = 'i am %s' % i
>>> t
'i am 17'

例如 %s 可以格式化字符型数据:

>>> i = '17'
>>> t = 'i am %s' % i
>>> t
'i am 17'

例如 %s 可以格式化浮点型数据:

>>> i = 17.222
>>> t = 'i am %s' % i
>>> t
'i am 17.222'

之所以能这样,是因为当电脑发现第一个值不是%s时,会先调用整型数的函数,把第一个值也就是1转成string类型,然后再调用str()函数来输出。

(2)浮点数的格式化技巧

第一,%f 默认格式化为6位小数的浮点数,如下,

>>> s = 1.23
>>> print 's is %f' % s
s is 1.230000

第二,%f 指定保留的小数位数,如下,

>>> s = 1.23234
>>> print 's is %.3f' % s
s is 1.232

第三,%f 指定输出字符串长度,如下,

>>> s = 11.23234
>>> print 's is %10.1f' % s
s is       11.2

注释:指定输出10个字符串,其中小数位数1位,不够就在字符串前用空格填充。

>>> s = 11.23234
>>> print 's is %010.1f' % s
s is 00000011.2

注释:指定输出10个字符串,其中小数位数1位,不够就在字符串前用0填充。

有时候在%6.2f这种形式中,6和2也不能事先指定,会在程序运行过程中再产生,可以用%*.*f的形式,当然在后面的”要输出的值组“中包含那两个*的值。比如:'%*.*f' % (6, 2, 2.345)就相当于'%6.2f' % 2.345。

第四,据说是最复杂的一种,格式化dictionary

‘%(name)s:%(score)06.1f' %{'score':9.5, 'name':'newsim'}
这种形式只用在要输出的内容为dictionary时。小括号中的(name)和(score)对应于后面的键值对中的键.