python基础——格式化字符串

python中格式化字符串有三种方式:

  • %方式
  • format方式
  • f方式

本博文先聊聊前两种


1.% 方式

格式:%[(name)] [flags] [width] .[precision] typecode

  • (name)    可选,用于选择指定的key
print("%(name)s的年龄是%(age)d岁" % {"name":"小明","age":20})

# 输出结果为:
小明的年龄是20岁
  • flags        可选,可供选择的值有:

     +       右对齐;正数前加正号,负数前加负号;

     -        左对齐;正数前无符号,负数前加负号;

     空格    右对齐;正数前加空格,负数前加负号;

     0        右对齐;正数前无符号,负数前加负号;用0填充空白处

  • width         可选,占有宽度(和flags配合使用)
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岁
  • .precision       可选,小数点后保留的位数
print("圆周率的值是%(pi).2f" % {"pi":3.1415926})
print("圆周率的值是%(pi)010.2f" % {"pi":3.1415926})

# 输出结果分别为:
圆周率的值是3.14
圆周率的值是0000003.14
  • typecode      必选       常用可选值有:
格式字符 说明 格式字符 说明
s 字符串(采用str()显示) r 字符串(采用repr()显示)
f 浮点数 o 八进制整数
d 十进制整数 x 十六进制整数
e或E 将整数、浮点数换成科学计数法 % 字符%

2.format 方式

基本语法为:

  • <模板字符串>.format(<逗号分隔的参数>)

如果大括号中没有序号,则按照位置顺序替换:

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))
  • format()方法中<模板字符串>除了包含参数序号,还可以包括格式控制符.此时,内部样式如下:

   {<参数序号>:<格式控制符>}

其中,<格式控制符>包括:<填充><对齐><宽度>,<.精度><类型>6个字段,这些字段都是可选的,可以组合使用.

        <填充>:指<宽度>内除了参数外的字符采用什么方式表示,默认采用空格.

        <宽度>:指当前槽的设定输出字符宽度       

        <对齐>:指参数在<宽度>内输出是的对齐方式,分别使用<,>和=三个符号表示左对齐,右对齐和居中对齐.

        ,逗号用于显示数字的千位分隔符

        <.精度>:表示两个含义,有小数点(.)开头.对于浮点数,精度表示小数部分输出的有效位数.对于字符串,精度表示输出的最大长度.

        <类型>:表示输出整数和浮点数类型的格式规则,用法如同%格式化字符。

print("第一个是:{0:@>10.3f},第二个是:{1:0<10,}".format(3.1415926,12345))

#输出结果为
第一个是:@@@@@3.142,第二个是:12,3450000

#表示的意思分别是:
#第一个:第0位数字,以标准浮点数、保留3为有效数字、指定10个字符宽度、右对齐、用@填充
#第二个:第1位数字,用“,”分隔千位、指定10个字符宽度、左对齐、用0填充

 

你可能感兴趣的:(python基础,格式化字符,python基础,格式化字符)