python自2.6后,新增了一種格式化字符串函數str.format(),威力十足,可以替換掉原來的%
注:以下操作版本是python2.7
映射示例
語法
通過{} 和 : 替換 %
通過位置
>>> '{0} is {1}'.format('jihite', '4 years old') 'jihite is 4 years old' >>> '{0} is {1} {0}'.format('jihite', '4 years old') 'jihite is 4 years old jihite'
通過format函數可以接受不限參數個數、不限順序
通過關鍵字
>>> '{name}:{age}'.format(age=4,name='jihite') 'jihite:4' >>> '{name}:{age}'.format(age=4,name='jihite',locate='Beijing') 'jihite:4'
format括號內用=給變量賦值
通過對象屬性
>>> class Person: ... def __init__(self, name, age): ... self.name,self.age = name, age ... def __func__(self): ... return "This guy is {self.name}, is {self.age} old".format(self=self) ... >>> s =Person('jihite', 4) >>> s.__func__() 'This guy is jihite, is 4 old'
通過下標
>>> '{0[0]} is {0[1]} years old!'.format(['jihite', 4]) 'jihite is 4 years old!' >>> '{0} is {1} years old!'.format('jihite', 4) 'jihite is 4 years old!'
其實就是通過位置
格式限定符
通過{} : 符號
填充和對齊
^<>分別表示居中、左對齊、右對齊,后面帶寬度
>>> '{:>10}'.format('jihite') ' jihite' >>> '{:<10}'.format('jihite') 'jihite ' >>> '{:^10}'.format('jihite') ' jihite '
精度和類型f
精度常和f一起使用
>>> '{:.2f}'.format(3.1415) '3.14' >>> '{:.4f}'.format(3.1) '3.1000'
進制轉化
>>> '{:b}'.format(10) '1010' >>> '{:o}'.format(10) '12' >>> '{:d}'.format(10) '10' >>> '{:x}'.format(10) 'a'
其中b o d x分別表示二、八、十、十六進制
千位分隔符
>>> '{:,}'.format(1000000) '1,000,000'
>>> '{:,}'.format(100000.23433)
'100,000.23433'
>>> '{:,}'.format('abcedef') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: Cannot specify ',' with 's'.