str.format() 这个特性从python2.6而来 其实实现的效果和%有些类似 不过有些地方更方便
通过位置映射:
In [1]: \'{0},{1}\'.format(\'kzc\',18) Out[1]: \'kzc,18\' In [2]: \'{},{}\'.format(\'kzc\',18) # 注意python2.6并不支持写为空 Out[2]: \'kzc,18\' In [3]: \'{1},{0},{1}\'.format(\'kzc\',18) Out[3]: \'18,kzc,18\'
通过关键字参数:
In [5]: \'{name},{age}\'.format(age=18,name=\'kzc\') Out[5]: \'kzc,18\'
通过对象属性:
class Person: def __init__(self,name,age): self.name,self.age = name,age def __str__(self): return \'This guy is {self.name},is {self.age} old\'.format(self=self) In [2]: str(Person(\'kzc\',18)) Out[2]: \'This guy is kzc,is 18 old\'
通过下标:
In [7]: p=[\'kzc\',18] In [8]: \'{0[0]},{0[1]}\'.format(p) Out[8]: \'kzc,18\'
除此之外,她还有非常丰富的格式限定功能。关键字是{}中带:符号
填充与对齐:
填充常跟对齐一起使用
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
举个例子
In [15]: \'{:>8}\'.format(\'189\') Out[15]: \' 189\' In [16]: \'{:0>8}\'.format(\'189\') Out[16]: \'00000189\' In [17]: \'{:a>8}\'.format(\'189\') Out[17]: \'aaaaa189\'
精度与类型:
In [44]: \'{:.2f}\'.format(321.33345) Out[44]: \'321.33\'
其他类型比如格式化多少进制输出:
In [54]: \'{:b}\'.format(17) Out[54]: \'10001\' In [55]: \'{:d}\'.format(17) Out[55]: \'17\' In [56]: \'{:o}\'.format(17) Out[56]: \'21\' In [57]: \'{:x}\'.format(17) Out[57]: \'11\'
用,号还能用来做金额的千位分隔符:
In [47]: \'{:,}\'.format(1234567890) Out[47]: \'1,234,567,890\'
此篇文章借鉴:http://www.jb51.net/article/63672.htm并非原创。