格式化字符串是一个模板,其中包含保持不变的单词或空格,以及之后插入的变量的占位符。
示例
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