python基础——字符串格式化(%操作符与str.format)

一、%操作符

在使用print打印方法中,经常会用到字符串格式化操作。常用的格式化符号如下表所示。

在使用print输出时,同时输出多个字符串的方法如下。

输入:

print('the score is %d ad result is %f' % (1298,1.314))

输出:

the score is 1298 ad result is 1.314000

对于浮点型数据,如果要保留特定位数的小数,方法如下。

输入:

print('the score is %d ad result is %.2f' % (1298,1.314))

输出:

the score is 1298 ad result is 1.31

其中.2f表示输出的浮点数保留2位四舍五入的小数。

二、str.format

与%占位符类似,str. format使用{}做占位符。这是一个针对字符串格式化输出的利器,相比较之前的%操作符,str.format使用灵活、方便,能通过多种途径获取要输出的变量内容。

str.format占位符所指示的格式化语法为:

[fill][align][sign][#][0][width][,][.precision][type]

其中:

  • [fill]是任何要填充到占位符的字符串。

  • [align]是对齐方式,通过<、>、=、^可设置为左对齐、右对齐、强制将变量值放到符号之后数字之前以及强制居中对齐。

  • [sign]是符号选项,仅对数字类型有效,通过+表示一个符号应该用于正数和负数;-表示一个符号只能用于负号;空格表示在正数时应使用前导空格,负数使用负号。

  • [#]选项仅对整数有效,仅适用于二进制、八进制或十六进制输出。如果存在,它指定输出将分别以0b、0o或0x为前缀。

  • [width]是定义最小字段宽度的十进制整数。如果未指定,则字段宽度将由内容决定。

  • [, ]表示使用逗号作为千分位分隔符。

  • [.precision]用来控制精度,这是一个十进制数,表示在使用f和F格式化的浮点值的小数点后面应显示多少个数字。

  • [type]表示以何种形式展示数据,常用的类型如下表所示。

案例一:通过位置映射获得变量信息输出数据

print('number:{1},count:{0}'.format(10,20))

输出:

number:20,count:10

 其中’'number:{1}, count:{0}'’为原始字符串,{1}代表format变量中的第2个变量值,{0}代表format变量中的第1个变量值。字符串的占位符与format参数不要求前后位置一一对应,只要索引位置对应即可。

例二:通过列表/元组/字符串的位置映射形式输出一组数据

str_key='I am:{0[1]} \nyou are:{0[2]} \nhe is :{0[0]}'
str_value=('luvy','tony','lilei')
print(str_key.format(str_value))

输出:

I am:tony 
you are:lilei 
he is :luvy

 其中{0[1]}代表输出的是元组的第2个值,以此类推,{0[2]}和{0[0]}分别代表元组的第3个和第1个值。format的参数变量可以是元组也可以是列表,只要是能迭代读出的序列就可以。除了列表和元素,还可以使用分割后的字符串(如果觉得字符串本身也有意义,也可以直接使用字符串),字符串位置与fomat参数的位置无关,只与位置索引有关。例如:

str_key='I am:{0[1]} \nyou are:{0[2]} \nhe is :{0[0]}'
str_value='luvy,tony,lilei'
print(str_key.format(str_value.split(',')))

输出:

I am:lilei 
you are:lilei 
he is :tony

 案例三:通过列表/元组/字符串的形式多次输出一组数据

str_key='I am:{0[1]} \nyou are:{0[1]} \nhe is :{0[0]}'
str_value='tony,lilei'
print(str_key.format(str_value.split(',')))

输出:

I am:lilei 
you are:lilei 
he is :tony

上述代码中,在占位符中可多次调用format参数中的索引。字符串可以多次映射到format参数的位置,与其参数的数量无关。 

案例四:通过关键字参数获得变量信息

str_value={'age':30,'name':'tony'}
str_key='I am:{name},I am:{age} years old'
print(str_key.format(**str_value))

输出:

I am:tony,I am:30 years old

 上述代码中,先定义一个字典,字典的key为关键字参数,然后在format参数中,通过“**+字典名称”的方式批量传入参数信息。

案例五:通过表达式结合数字传递变量信息

print('rate is:{:.2%}'.format(10/21))

输出:

rate is:47.62%

上述代码中,在format参数中传入一个表达式来传值。占位符表示的是保留2位小数的百分数。 

案例六:样式居中对齐

print('{:*^40}'.format('this is title'))

输出:

*************this is title**************

上述代码中,强制字符串居中对齐,总长度为40位,不足的部分以*补齐。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xia ge tou lia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值