字符串格式化:format函数

字符串格式化:format函数

相比较.format和占位符%来说,我个人是比较喜欢.format的,因为它对于结构和排版来说都非常的整洁。

.format在许多方面看起来更便利.对于%最烦人的是它无法同时传递一个变量和元组.你可能会想下面的代码不会有什么问题:

name = 'zhangsan' ;
print( 'my name is %s '%name)
你会得出如下结论:

如果name中不是一个字符串,而是一个元组类型的数据比如

name = (1 ,2 ,3)

 此时你的代码必须在name后面加上逗号,

name = (1 ,2 ,3)

print("my name is%s"%(name , ))

此时你会得到正常的输出:
否则则会出现如下错误:


或者你可以使用.format

name = (1 ,2 ,3)

print("hi there{0}".format(name))

 

相比较占符来说,.format比较方便简洁。而且非常的灵活,在接下来的篇幅中,我会为大家一一介绍;

sb = 'sss'
dsb = 555
print ( ' {0} {1} ' .format(sb , dsb))
print ( ' {0} {1} , {0} ' .format(sb , dsb))


如上所示,format可以与{}之间建立映射关系。也就是说完全可以通过控制下标来进行对变量的管理,简洁,灵活;不需要多次让相同的变量出现;

sb = [ 'zhangsan' , 'lisi' , 666 ]
dsb = [ 'wangwu' , 'dingliu' , 999 ]
print ( ' {0[0]} , {0[2]} , {1[0]} , {1[1]} ' .format(sb , dsb))


看过之前的例子,{x[y]}其中的x代表的便是format函数中所对应变量的下标,而y则是相对应的数组中的数据的下标;

sb = { 'zhangsan' : 666 , 'lisi' : 777 }
dsb = { 'wangwu' : 888 , 'dingliu' : 999 }
print ( ' {0[zhangsan]} , {1[wangwu]} ' .format(sb , dsb))

对于dict来说,跟数组的相差并不太,只是由下标查询改为了关键字;

class Person :
def __init__ ( self , name , score ):
self .name = name ;
self .score = score ;
def __str__ ( self ): #重写输出
return 'my name is {self.name} and my score is {self.score} ' .format( self = self )

s = str (Person( 'zhangsan' , 59 ))
print (s)


其中__str__重写了输出函数print,将输出的格式改为我们想要的;重点是format函数还可以通过对象属性输出

format函数还有很多格式限定符,而作为小白的我在刚接触format时并不知情,当时format的灵活性倒是给了我很大的印象;现在我为大家一一列出:

个是限定符的语法是{}中必须带着:的

如上文所说,format函数给人很工整的感觉,他有着excel中类似的填充和对齐:

^ , < , >分别对应居中,左对齐,右对齐;

a = 555
print ( ' {:>5} ' .format(a))

如上所示,其中{:x>y}其中的x代表你所要填充的字符,只能一个字符,默认为空格。而y相当于你有多少个格子,比如我定义5个格子,而555只用了3个,那么剩余的两个就由空格填充

a = 555
print ( ' {:g>5} ' .format(a))

在运用于金钱展示时,format函数还可以坐千位分隔符

a = 55555555
print ( ' {:,} ' .format(a))

当然format还有一些基本的进制转换

a = 10
print ( '我是二进制 {:b} ' .format(a))
print ( '我是十进制 {:d} ' .format(a))
print ( '我是八进制 {:o} ' .format(a))
print ( '我是十六进制 {:x} ' .format(a))

精度方面,

a = 10.111
print ( ' {:.1f} ' .format(a))

其中.代表小数点后,1表示长度为1的精度,f则代表浮点数,而浮点数与与精度通常一起使用

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值