Python字符串格式化占位操作解析

在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填充。

————————感谢阅读————————

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值