python中格式化字符串有三种方式:
本博文先聊聊前两种
格式:%[(name)] [flags] [width] .[precision] typecode
print("%(name)s的年龄是%(age)d岁" % {"name":"小明","age":20})
# 输出结果为:
小明的年龄是20岁
+ 右对齐;正数前加正号,负数前加负号;
- 左对齐;正数前无符号,负数前加负号;
空格 右对齐;正数前加空格,负数前加负号;
0 右对齐;正数前无符号,负数前加负号;用0填充空白处
print("%(name)10s的年龄是%(age)10d岁" % {"name":"小明","age":20})
print("%(name)+10s的年龄是%(age)-10d岁" % {"name":"小明","age":20})
print("%(name) 10s的年龄是%(age) 10d岁" % {"name":"小明","age":-20})
print("%(name)10s的年龄是%(age)010d岁" % {"name":"小明","age":-20})
# 输出结果分别为:
小明的年龄是 20岁 # 没有flags情况下默认右对齐补空格
小明的年龄是20 岁
小明的年龄是 -20岁
小明的年龄是-000000020岁
print("圆周率的值是%(pi).2f" % {"pi":3.1415926})
print("圆周率的值是%(pi)010.2f" % {"pi":3.1415926})
# 输出结果分别为:
圆周率的值是3.14
圆周率的值是0000003.14
格式字符 | 说明 | 格式字符 | 说明 |
s | 字符串(采用str()显示) | r | 字符串(采用repr()显示) |
f | 浮点数 | o | 八进制整数 |
d | 十进制整数 | x | 十六进制整数 |
e或E | 将整数、浮点数换成科学计数法 | % | 字符% |
基本语法为:
如果大括号中没有序号,则按照位置顺序替换:
print("{}:计算机{}的CPU占用率为{}".format("2019-12-24","User",30))
输出结果为:
2019-12-24:计算机User的CPU占用率为30
如果大括号中指定了使用参数的序号,按照序号对应参数替换.参数从0开始编号:
print("{1}:计算机{0}的CPU占用率为{2}".format("User","2019-12-24",30))
输出结果为:
2019-12-24:计算机User的CPU占用率为30
还可以通过关键字参数指定填充的参数
print("{time}:计算机{name}的CPU占用率为{rate}".format(name="User",time="2019-12-24",rate=30))
输出结果为:
2019-12-24:计算机User的CPU占用率为30
还可以通过字典的key指定填充的参数
dic = {"name":"User","time":"2019-12-24","rate":30}
print("{dic[time]}:计算机{dic[name]}的CPU占用率为{dic[rate]}".format(dic=dic))
输出结果为:
2019-12-24:计算机User的CPU占用率为30
还可以通过对象属性指定填充的参数
class Computer():
def __init__(self,name,time,rate):
self.name=name
self.time=time
self.rate=rate
my_computer = Computer("User","2019-12-24",30)
print("{my_computer.time}:计算机{my_computer.name}的CPU占用率为{my_computer.rate}".format(my_computer=my_computer))
{<参数序号>:<格式控制符>}
其中,<格式控制符>包括:<填充><对齐><宽度>,<.精度><类型>6个字段,这些字段都是可选的,可以组合使用.
<填充>:指<宽度>内除了参数外的字符采用什么方式表示,默认采用空格.
<宽度>:指当前槽的设定输出字符宽度
<对齐>:指参数在<宽度>内输出是的对齐方式,分别使用<,>和=三个符号表示左对齐,右对齐和居中对齐.
,逗号用于显示数字的千位分隔符
<.精度>:表示两个含义,有小数点(.)开头.对于浮点数,精度表示小数部分输出的有效位数.对于字符串,精度表示输出的最大长度.
<类型>:表示输出整数和浮点数类型的格式规则,用法如同%格式化字符。
print("第一个是:{0:@>10.3f},第二个是:{1:0<10,}".format(3.1415926,12345))
#输出结果为
第一个是:@@@@@3.142,第二个是:12,3450000
#表示的意思分别是:
#第一个:第0位数字,以标准浮点数、保留3为有效数字、指定10个字符宽度、右对齐、用@填充
#第二个:第1位数字,用“,”分隔千位、指定10个字符宽度、左对齐、用0填充