、格式化字符串是指先制定一- 个模板,在这个模板中预留几个空位,然后再根据需要填上相应的内容。这些空位需要通过指定的符号标记( 也称为占位符),而这些符号还不会显示出来。在Python中,格式化字符串有以下两种方法:
**1.使用“%”操作符
语法格式如下:
"%[-][+][0][m][ .n]格式化字符"%exp
参数说明:
- -:可选参数,用于指定左对齐,正数前方无符号,负数前面加负号。
- +:可选参数,用于指定右对齐,正数前方加正号,负数前方加负号。
- 0:可选参数,表示右对齐,正数前方无符号,负数前方加负号,用0填充空白处(一般与m参数一起使用)。
- m:可选参数,表示占有宽度。
- .n:可选参数,表示小数点后保留的位数。
- 格式化字符:用于指定类型。
- exp:要转换的项。如果要指定的项有多个,需要通过元组的形式进行指定,但不能使用列表。
常用的格式化字符
格式化字符 | 说明 |
%s | 字符串(采用str()显示) |
%c | 单个字符 |
%d或者%i | 十进制整数 |
%x | 十六进制整数 |
%f或者%F | 浮点数 |
%r | 字符串(采用repr()显示) |
%o | 八进制整数 |
%e | 指数(基底写为e) |
%E | 指数(基底写为E) |
%% | 字符% |
例如:
my_name = 'Zed A. Shaw'
my_age = 35 # not a lie
my_height = 74 # inches
my_weight = 180 # lbs
my_eyes = 'Blue'
my_teeth = 'White'
my_hair = 'Brown'
print ("Let's talk about %s." % my_name)
print ("He's %d inches tall." % my_height)
print ("He's %d pounds heavy." % my_weight)
print ("Actually that's not too heavy.")
print ("He's got %s eyes and %s hair." % (my_eyes, my_hair))
print ("His teeth are usually %s depending on the coffee." % my_teeth)
# this line is tricky, try to get it exactly right
print("If I add %d, %d, and %d I get %d." %
(my_age, my_height, my_weight, my_age + my_height + my_weight))
输出结果:
2.使用字符串对象的format()方法
、 字符串对象提供了foma()方法用于进行字符串格式化,语法格式如下:
str. format(args)
参数说明:
- str:用于指定字符串的显示样式(即模板)。
- args:用于指定要转换的项,如果有多项,则用逗号进行分隔。
下面重点介绍创建模板。在创建模板时,需要使用“{}”和“.”指定占位符,语法格式如下:
{[index][:[[fil1]align][sign][#][width][ .precision][type]]}
参数说明:
- index:可选参数,用于指定要设置格式的对象在参数列表中的索引位置,索引值从0开始,如果省略,则根据数值的先后顺序自动分配。
- fill:可选参数, 用于指定空白处填充的字符。
- align:可选参数,用于指定对齐方式(值为“<”时表示内容左对齐;值为“>”时表示内容右对齐:值为“=”时表示内容右对齐,将符号放在填充内容的最左侧,且只对数字类型有效;值为“^”时表示内容居中),需要配合width一起使用。
- sign:可选参数,用于指定有无符号数(值为“+”表示正数加正号,负数加负号;值为”表示正数不变:负数加负号,值为空格表示正数加空格,负数加负号)。
- #:可选参数,对于二进制数、八进制数和十六进制数,如果加上#,表示会显示0/b/0o/0x前缀,否则不显示前缀。
- width:可选参数,用于指定所占宽度。
- .precision:可选参数,用于指定保留的小数位数。
- type :可选参数,用于指定类型。
format()方法常用的格式化字符
格式化字符 | 说明 |
s | 对字符串类型格式化 |
d | 十进制整数 |
c | 将十进制整数自动转换成对应的Unicode字符 |
e或者E | 转换为科学计数法表示再格式化 |
g或者G | 自动在e和f或者E和F中切换 |
b | 将十进制整数自动转换成二进制表示再格式化 |
o | 将十进制整数自动转换成八进制表示再格式化 |
x或者X | 将十进制整数自动转换成十六进制表示再格式化 |
f或者F | 转换为浮点数(默认小数点后保留6位)再格式化 |
% | 显示百分比(默认显示小数点后6位) |
例如:
template = "编号:{:0>9s}\t公司名称:{:s}\t官网:http://www.{:s}.com"
contest = template.format("1","百度","baidu")
print(contest)
输出结果: