Python String Formatting

%格式化

运算符%可用于格式化字符串:

1
2
>>> '%s world %d' % ('Hello', 12)
'Hello world 12'

其中前半段''内的是原字符串,%s%d是占位符,最后()内的是占位符的实际内容(若是变量则将输出其值,即若令a='Hello',并将Hello替换为a,则上面代码的输出结果不变)。占位符的用法与C语言的一致,如%dint%ffloat%sstring%5s表右对齐占5位(不够则用空格补齐),%.2s表取2位(超出则截断,对于%.f是指保留2位小数),%-s表字符串左对齐,等等,此处不再赘述。

format格式化

formatstring对象的成员函数,功能是格式化原字符串,并返回格式化后的字符串:

1
2
3
4
5
6
7
8
>>> '{} {}'.format('hello','world')  # 不带字段
'hello world'
>>> '{0} {1}'.format('hello','world') # 带位置编号
'hello world'
>>> '{0} {1} {0}'.format('hello','world') # 打乱顺序
'hello world hello'
>>> '{a} {b} {a}'.format(b='hello',a='world') # 带关键字
'world hello world'

原字符串中的{}起着占位的作用,占位的方式有三种:

  1. 不带任何字段的占位,即第一种。这种情况下,传给format的参数将顺序替换掉占位的{}
  2. 带位置编号的占位,即第二、三种。这种情况下,位置编号代表传给format的参数的先后次序(如'hello'为0),传入参数将按编号替换掉占位符;
  3. 带关键字的占位,即第四种。这种最直观,直接用变量名来占位。

format格式化的占位符也可以结合%格式化的占位符,不过要用:区分开,如:

1
2
>>> '{a} {b} {a:.2s}'.format(b='hello',a='world')
'world hello wo'

{a:.2s}表示按字符串输出但是只保留两位。

参考