python_格式化输出(%用法和format用法)

字符串的格式化主要有两种,第一种是%形式的,第二种是python特有的,format形式。

#百分号形式
s = "我是%s, 我今年%d岁。" % ("Lily", 18)
print(s)# 我是Lily, 我今年18岁。
 
#format形式
t = "我是{}, 我今年{}岁。".format('Lily', 18)
print(t)# 我是Lily, 我今年18岁。

1、 %百分号形式

格式:
%[(name)][flags][width].[precision]typecode(称为一个占位符)
传值时,在字符串“...” 后加上百分号%和一个传值的元组,依次传入字符串中的%占位符。
格式说明:
[]表示该项是可选的,在使用过程中,可以使用,也可以不使用;没有用[]括起来的%和typecode是必选的。
当要字符串中要传入%号,那么用%%表示一个%,比如下方代码:
 

s = "酒精的度数是%.2f%%"%(47)
print(s)#酒精的度数是47.00%

[typecode]有以下常见的几种
s:字符串
d:整数
o:将十进制整数转化为八进制,传入指定位置
x:将十进制转化为十六进制,传入指定位置
e/E:将整数/浮点数转化为科学记数法,传入指定位置
f/F:将整数/浮点数转化为小数位数为6的浮点数,传入指定位置
[(name)] 传值时按照name传值,一定要加上(),传值时用字典传入,传入的参数可以不按照字符串中占位符的顺序,如下示例
 

s = "我是%(name)s, 我今年%(old)d岁。" % {'name': 'Lily', 'old': 18}
print(s)# 我是Lily, 我今年18岁。
 
t = "我是%(name)s, 我今年%(old)d岁。" % {'old': 18, 'name': 'Lily'}
print(t)# 我是Lily, 我今年18岁。

[flags]与[width]配合使用,[flags]表示该占位符的对齐方式,[width表示该占位符的宽度]
[flags]可以为以下四种符号:+,-, (空格), 0表示,所表示的意思如下,其中[width]也可以不设置,此时仅剩表格中的正负数的讨论


 

 

 

+     

 

右对齐  在[width]宽度下,占位符右对齐,如果传入值是一个正数,那么在右对齐的同时,在该数字前加+号,如果传入值是负数,则只右对齐,不作其他操作。
空格   右对齐   在[width]宽度下,占位符右对齐,如果传入值是一个正数,即使传入值前加+号,字符串中也不加正好,同时将原本该用+号的地方用空格替代,如果传入的是一个负数,那么只右对齐,不作其他操作。
0      右对齐 在[width]宽度下,占位符右对齐,其余部分用0填充,如果传入一个整数,不加+号,如果传入一个负数,那么-号放在最左边。
-   左对齐   在[width]宽度下,左对齐,其余地方空格,正数前不加+,负数前加-
s = "我是%(name)s, 我今年%(old)+8d岁。" % {'name': 'mary', 'old': +18}
print(s)# 我是mary, 我今年     +18岁。
 
 
s = "我是%(name)s, 我今年%(old) 8d岁。" % {'name': 'mary', 'old': +18}
print(s)# 我是mary, 我今年      18岁。
 
 
s = "我是%(name)s, 我今年%(old)-8d岁。" % {'name': 'mary', 'old': +18}
print(s)# 我是mary, 我今年18      岁。
 
 
s = "我是%(name)s, 我今年%(old)08d岁。" % {'name': 'mary', 'old': +18}
print(s)# 我是mary, 我今年00000018岁。
  • [precision]表示当该占位符表示一个浮点数时,小数点后的位数,默认情况下为小数点后6位。
s = "%f" %(6.0)
print(s) #6.000000

当需要仅保留小数点后2位时:

s = "%.2f" %(6.0)
print(s) #6.00

2、format格式
占位符用{}表示,内部格式为:[[fill]align][sign][#][0][width][,][.precision][type],[]表示可选,所以当{}中什么都没有时,传入什么值就是什么值。
传值时,整体字符串的格式为:".....".format(传入的值),""中包含一些用{}表示的占位符。
相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’

       (1)不带编号,即“{}”

  (2)带数字编号,可调换顺序,即“{1}”、“{2}”

  (3)带关键字,即“{a}”、“{tom}”

格式说明:
[fill]:按照某宽度对齐时空白处填充的字符
[align]:对齐方式:<左对齐;>右对齐; =仅针对数字类型,右对齐,符号放在填充字符的左侧; ^居中
[sign]:针对数字的正负号约定,+正好负号都加;-正号不变,负号要加;空格 正好处用空格填充,负号要加
[#]: 对与二进制/八进制/十六进制数,加上#,字符串中会显示0b/0o/0x
[,]: 为数字添加分隔符,例如1000000,表示为1,000,000
[.precision]: 小数的保留位数
[type]: 与百分号形式的相同,参见上文中的表格
声明格式时,都要在{}中先输入冒号:
 

s = "我是{}, 我今年{}岁。".format('mary', 18)#需按顺序传入
print(s)# 我是mary, 我今年18岁。
 
s = "我是{1}, 我今年{0}岁。".format(18, 'mary')#需按下标传入
print(s)# 我是mary, 我今年18岁。
 
s = "我是{name}, 我今年{old}岁。".format(old=18, name='mary')#需键值对传入
print(s)# 我是mary, 我今年18岁。
 
s = "我是{name}, 我今年{old}岁。".format(**{'old': 18, 'name': 'mary'})#需字典传入
print(s)# 我是mary, 我今年18岁。
 
s = "酒精的度数是{:.2f}%".format(47)
print(s)#酒精的度数是47.00%

 

 

 

参考:https://www.cnblogs.com/fat39/p/7159881.html#tag2

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值