1. 填充
1.1 通过位置来填充字符串
'hello {0} i am {1}'.format('Kevin','Tom')
#hello Kevin i am Tom
'hello {} i am {}'.format('Kevin','Tom')
#hello Kevin i am Tom
'hello {0} i am {1} .my name is {0}'.format('Kevin','Tom')
# hello Kevin i am Tom .my name is Kevin
foramt会把参数按位置顺序来填充到字符串中,第一个参数是0,然后1 …… 也可以不输入数字,这样也会按顺序来填充 同一个参数可以填充多次,这个是format比%先进的地方
1.2 通过key来填充
print 'hello {name1} i am {name2}'.format(name1='Kevin',name2='Tom')
1.3 通过下标填充
names=['Kevin','Tom']
'hello {names[0]} i am {names[1]}'.format(names=names)
#hello Kevin i am Tom
'hello {0[0]} i am {0[1]}'.format(names)
#hello Kevin i am Tom
1.4 通过字典的key填充
names={'name':'Kevin','name2':'Tom'}
print 'hello {names[name]} i am {names[name2]}'.format(names=names)
注意访问字典的key,不用引号的
1.5 通过对象的属性填充
class
Names():
name1='Kevin'
name2='Tom'
'hello {names.name1} i am {names.name2}'.format(names=Names)
#hello Kevin i am Tom
1.6 使用魔法参数填充
args=['lu']
kwargs = {'name1': 'Kevin', 'name2': 'Tom'}
print 'hello {name1} {} i am {name2}'.format(*args, **kwargs)
# hello Kevin i am Tom
2. 格式转换
3. 对齐与填充
4. 其他
4.1 转义{和}符号
print '{{ hello {0} }}'.format('Kevin')
跟%中%%转义%一样,format中用两个大括号来转义
4.2 format作为函数
f = 'hello {0} i am {1}'.format
print f('Kevin','Tom')
4.3 格式化datetime
now=datetime.now()
print '{:%Y-%m-%d %X}'.format(now)
4.4 {}内嵌{}
print 'hello {0:>{1}} '.format('Kevin',50)
4.5 叹号的用法
#!后面可以加s r a 分别对应str() repr() ascii()
#作用是在填充前先用对应的函数来处理参数
"{!s}".format('2')
# 2
"{!r}".format('2')
# '2'
差别就是repr带有引号,str()是面向用户的,目的是可读性,repr()是面向python解析器的,返回值表示在python内部的含义