1. 填充


1.1 通过位置来填充字符串

  1. print
  2. 'hello {0} i am {1}'.format('Kevin','Tom')
  3. #hello Kevin i am Tom
  4. print
  5. 'hello {} i am {}'.format('Kevin','Tom')
  6. #hello Kevin i am Tom
  7. print
  8. 'hello {0} i am {1} .my name is {0}'.format('Kevin','Tom')
  9. # hello Kevin i am Tom .my name is Kevin

foramt会把参数按位置顺序来填充到字符串中,第一个参数是0,然后1 …… 也可以不输入数字,这样也会按顺序来填充 同一个参数可以填充多次,这个是format比%先进的地方

1.2 通过key来填充

  1. print 'hello {name1} i am {name2}'.format(name1='Kevin',name2='Tom')

1.3 通过下标填充

  1. names=['Kevin','Tom']
  2. print
  3. 'hello {names[0]} i am {names[1]}'.format(names=names)
  4. #hello Kevin i am Tom
  5. print
  6. 'hello {0[0]} i am {0[1]}'.format(names)
  7. #hello Kevin i am Tom

1.4 通过字典的key填充

  1. names={'name':'Kevin','name2':'Tom'}
  2. print 'hello {names[name]} i am {names[name2]}'.format(names=names)

注意访问字典的key,不用引号的

1.5 通过对象的属性填充

  1. class
  2. Names():
  3. name1='Kevin'
  4. name2='Tom'
  5. print
  6. 'hello {names.name1} i am {names.name2}'.format(names=Names)
  7. #hello Kevin i am Tom

1.6 使用魔法参数填充

  1. args=['lu']
  2. kwargs = {'name1': 'Kevin', 'name2': 'Tom'}
  3. print 'hello {name1} {} i am {name2}'.format(*args, **kwargs)
  4. # hello Kevin i am Tom

2. 格式转换


b、d、o、x分别是二进制、十进制、八进制、十六进制。
format - 图1

3. 对齐与填充


format - 图2

4. 其他


4.1 转义{和}符号

  1. print '{{ hello {0} }}'.format('Kevin')

跟%中%%转义%一样,format中用两个大括号来转义

4.2 format作为函数

  1. f = 'hello {0} i am {1}'.format
  2. print f('Kevin','Tom')

4.3 格式化datetime

  1. now=datetime.now()
  2. print '{:%Y-%m-%d %X}'.format(now)

4.4 {}内嵌{}

  1. print 'hello {0:>{1}} '.format('Kevin',50)

4.5 叹号的用法

  1. #!后面可以加s r a 分别对应str() repr() ascii()
  2. #作用是在填充前先用对应的函数来处理参数
  3. print
  4. "{!s}".format('2')
  5. # 2
  6. print
  7. "{!r}".format('2')
  8. # '2'

差别就是repr带有引号,str()是面向用户的,目的是可读性,repr()是面向python解析器的,返回值表示在python内部的含义