字符串格式化允许在一个单个的步骤中对一个字符串执行多个特定类型的替换
特别是给用户提示的时候,格式化非常方便
实现方法:
1. 格式化表达式,类似于 c 语言的 printf
在表达式中,我们使用 % 二进制操作符
  >>> print('this is %d %s bird' % (1,'dead'))  
  this is 1 dead bird  
    举上面的例子说明(注意我们下面所说的 %,都是以字符串和元组中间的那个为准)
在 % 的左边放置一个字符串,字符串里面放置了一个或者多个使用 % 开头的嵌入对象
在 % 的右边放入一个(或多个,嵌入元组当中)对象,这些对象将插入到左边的转换目标位置上
  >>> name='ray'  
  >>> 'my name is %s' % name  
  'my name is ray'  
  >>> '%d %s %d you' % (1,'spam',4)  
  '1 spam 4 you'  
  >>> '%s---%s---%s' % (42,3.14,[1,2,3])  
  '42---3.14---[1, 2, 3]'  
  >>>   
    当插入多个对象时,需要把他们放到一个元组里面
2. 高级格式化表达式
字符串格式化代码列表
| 代码 | 意义 | 
|---|---|
| s | 字符串(或者任何对象) | 
| r | s, 但是用 repr,而不是 str | 
| c | 字符 | 
| d | 十进制整数 | 
| i | 整数 | 
| u | 无号整数 | 
| o | 八进制整数 | 
| x | 十六进制整数 | 
| X | x,但打印大写 | 
| e | 浮点指数 | 
| E | e,但打印大写 | 
| f | 浮点十进制 | 
| F | 浮点十进制 | 
| g | 浮点e或f | 
| G | 浮点e或f | 
| % | 常量% | 
%[(name)][flags][width][.pression]typecode
例子
  >>> x=1234  
  >>> res='integers:...%d...%-6d...%06d' % (x,x,x)  
  >>> res  
  'integers:...1234...1234  ...001234'  
  >>>   
    %e, %f, %g 对于浮点数的打印是有所区别的
  >>> x=1.23456789  
  >>> x  
  1.23456789  
  >>> '%e|%f|%g' % (x,x,x)  
  '1.234568e+00|1.234568|1.23457'  
  >>>   
    3. 基于字典的格式化表达式
  >>> 'my name is %(name)s,my age is %(age)d' % {'name':'ray','age':30}  
  'my name is ray,my age is 30'  
  >>>   
    说白了就是给每个替换位置命名,这样代码看起来更加明了