在Python中,在字符串中占位的语法格式是:
%[(name)][flags][width]type
其中加中括号的内容是可选的。
简单的例子:
str = "我的名字是:%s,我来自:%s" print(str % ("小杜","安徽"))
# 输出 我是小杜,我来自安徽
在变量str中,%s就是一个占位符,他代表在变量中占位的内容,如果有多个占位符,需要将填充的内容用元组表示,需要按顺序填充。
对上面的语法进行详细的解释:
1.type
这是必选的一个参数,他代表对占位填充的的数据的格式化方式。
(1).%s
上面的%s就代表将传入的内容转换成str字符串格式,然后进行拼接,通过%s就可以将数字与字符串进行拼接,因为数字会被转换成字符串格式。
例如:
str="我今年 %s 岁" print(str % 18)
#输出:我今年18岁
(2).%f
%f代表将浮点数和数字都转换成浮点数进行拼接。
str="我今年 %s 岁" print(str % 18) #输出:我今年18.000000岁
(3).%i/d
将整数或浮点数转换成十进制整数并格式化到指定位置
str="我出生于 %i 年" print(str % 2004.00)
""" 输出 我出生于2004年,%i与%d效果相同
即:
str="我出生于 %d 年" 需要注意的是,浮点数转换成整数只会保留整数部分,不遵守四舍五入。
"""
以上三种格式化方法的完整示例:
intro="大家好,我是:%s 我来自 %s 我现在就读于:%s 我的学号是:%i 我现在的年级是:%d 我每个月的生活费大约是:%f" print(intro % ("小杜","安徽省","巢湖学院",2222222,1,88888.888))
#输出:大家好,我是:小杜 我来自 安徽省 我现在就读于:巢湖学院 我的学号是:2222222 我现在的年级是:1 我每个月的生活费大约是:88888.888000
这三种格式化的方式是最常用的三种,Python中还包含更多的方式:
(4).%e/E
将整数或浮点数转换成科学计数法并拼接到指定位置,如果是e则科学计数法中也是e如果是E则科学计数法中也是E
str="将 %s 用小科学计数法表示是:%e"
str2="将 %s 用大科学计数法表示是:%E"
num=14725888800
print(str % (num,num),str2 %(num,num))
#将 14725888800 用小科学计数法表示是:1.472589e+10 将 14725888800 用大科学计数法表示是:1.472589E+10
(5).%g/G
自动将浮点数或者整数转换为浮点数或者科学计数法,如果小于6位则使用整数表示,如果大于6位则使用科学计数法,大小写的区别同上。
str="小g: %g"
str2="大G:%G"
print(str % 1666,str2 %1666)
#小g: 1666 大G:1666 print(str % 1433223 , str2 % 1433223)
#小g: 1.43322e+06 大G:1.43322E+06
print( str % 0.1433223, str2 % 0.1433223)
#小g: 0.143322 大G:0.143322
(6).%o/x、
将数字转换成八进制或十六进制表示,如果是o则转换成八进制,f则是十六进制。
str = "%d 用八进制表示为: %o 用十六进制表示则是 %x"
num=128
print(str % (num,num,num))
#128 用八进制表示为: 200 用十六进制表示则是 80
(7).%r
返回当前对象的描述信息,要求的数据类型是对象。
(8). %c
返回整数对应的Unicode值,如果格式化的内容是整数的话,如果是字符串则将指定字符串拼接到对应位置。
2.(name)
第一个可选的参数(name)表示当前占位位置起一个别名,在填充是通过字典的方式将所有位置进行填充,不限制顺序。
str="%(year)d 年%(company)s工业总产值为:%(count)f";
print(str % {"company":"扬州市雷勤市政工程有限公司","year":2021,"count":"21456548.75"})
#2021 年扬州市雷勤市政工程有限公司工业总产值为:21456548.750000
3.width
width参数是精度控制的参数,width表示最后保留几位小数或整数,上面的例子中,例如%f的例子和最后综合的例子,小数都变成了保留后六位,这是width参数的默认值,如果不设置width参数,则默认保留六位小数。
width参数有两个可能的值:
(1). m
表示控制数字的宽度,包括整数和小数部分,如果宽度不够则使用空格补齐,如果设置的宽度小于数字本身的宽度,则不生效默认是不限制整数位,也不用空格填充,此参数较不常用。
str="限制六位宽度:%6f"
print(str % 131)
#限制六位宽度:131.000000
print(str % 1314.5201111)
#限制六位宽度:1314.520111
str="限制六位宽度:%6d"
print(str % 1888)
#限制六位宽度: 1888
(2). .n
表示小数点保留的位数,此项设置会将其小数位保留的位数四舍五入。
str="限制小数位两位小数: %.2f"
print(str % 1.459)
#限制小数位两位小数: 1.46
print(str % 1.3215)
#限制小数位两位小数: 1.32
(3). m.n
m与.n可以结合在一起使用,m表示整个数字的宽度,包括小数和整数,如果小数字长度则不生效,.n表示小数点的位数,此选项四舍五入。
str="将m与.n结合使用: %6.3f"
print(str % 13.66758)
#将m与.n结合使用:13.668(注意有一个空格)
print(str % 2584.9678)
#将m与.n结合使用: 2584.968
4.flags
表示填充内容的对齐方式和填充方式,默认向右对齐,如果他的值是-则向左对齐,他是在精度控制之前的,与精度控制配合使用,可以改变精度控制的m大于填充数字宽度时填充的内容,默认是空格,如果是0则以0填充。
————————感谢阅读————————