格式化字符串是一个模板,其中包含保持不变的单词或空格,以及之后插入的变量的占位符。

示例

name="ydong"
age=18
print('%s is %d years old'%(aname,age))

% 是字符串运算符,被称作格式化运算符 。表达式的左边部分是模板(也叫格式化字符串),右边部分则是一系列用于格式化字符串的值。右边的值的个数与格式化字符串中% 的个数一致。这些值将依次从左到右地被换入格式化字符串。

格式化字符串可以包含一个或者多个转换声明。转换字符告诉格式化运算符,什么类型的值会被插入到字符串中的相应位置。在上面的例子中,%s 声明了一个字符串,%d 则声明了一个整数。其他可能的类型声明还包括i 、u 、f 、e 、g 、c 和%
格式化字符串可用的类型声明

字符

输出格式

d 、i

整数

u

无符号整数

f

m.dddd格式的浮点数

e

m.dddde+/-xx格式的浮点数

E

m.ddddE+/-xx格式的浮点数

g

对指数小于-4或者大于5的使用%e ,否则使用%f

c

单个字符

s

字符串,或者任意可以通过str 函数转换成字符串的Python数据对象

%

插入一个常量% 符号

格式化修改符
可以在% 和格式化字符之间加入一个格式化修改符。格式化修改符可以根据给定的宽度对值进行左对齐或者右对齐,也可以通过小数点之后的一些数字来指定宽度。

修改符

例子

解释

数字

%20d

将值放在20个字符宽的区域中

-

%-20d

将值放在20个字符宽的区域中,并且左对齐

+

%+20d

将值放在20个字符宽的区域中,并且右对齐

0

%020d

将值放在20个字符宽的区域中,并在前面补上0

.

%20.2f

将值放在20个字符宽的区域中,并且保留小数点后2位

(name)

%(name)d

从字典中获取name 键对应的值

格式化运算符的右边是将被插入格式化字符串的一些值。这个集合可以是元组或者字典。如果这个集合是元组,那么值就根据位置次序被插入。也就是说,元组中的第一个元素对应于格式化字符串中的第一个格式化字符。如果这个集合是字典,那么值就根据它们对应的键被插入,并且所有的格式化字符必须使用(name) 修改符来指定键名。

元组

price = 24
item = "banana"
print("The %s costs %d cents" % (item,price))
print("The %+10s costs %5.2f cents" % (item,price))
print("The %+10s costs %10.2f cents" % (item,price))
The banana costs 24 cents
The     banana costs 24.00 cents
The     banana costs     24.00 cents

字典

itemdict = {"item":"banana","cost":24}
print("The %(item)s costs %(cost)7.1f cents" % itemdict)
The banana costs    24.0 cents