字符串的格式化输出

一、定义:所谓字符申格式化就是要先制定个模板。 在这个模板中某个或者某几个地方留出空位来,然后在那些空位填上字符串,井且在显示结果中,字特串要符合空位置所设定的约束条件。

二、格式化输出的方式:%、str.format、f{str}

  1、%号格式化输出

    Brith:%号格式化字符串的方式从Python诞生之初就已经存在,时至今日,python官方也并未弃用%号,但也并不推荐这种格式化方式。

     (1)用%s占位,但格式的字符串(即%s)与被格式化的字符串(即传入的值)必须按照位置一一对应

        例1:

# a = "大金块"
# b = "金少"
# print("%s说那个%s好大好亮"%(b,a))
# print("%s说%s好高好帅"%(a,b))

         例2:

# name_str = "jack"
# age_str = 18
# print("我的名字是%s,我的年龄为%s"%(name_str,age_str))

     (2)可以通过字典方式格式化,既打破了位置带来的限制与困扰,又能减少代码行数,使代码看起来更整洁

             例1:

# dic = {"a":"大金块","b":"金少"}
# print("%(b)s说那个%(a)s好大好亮"%(dic))
# print("%(a)s%(b)s好高好帅"%(dic))

              例2

dic = {"name_str":"jack","age_str":"18"}
print("我的名字是%(name_str)s,我的年龄是%(age_str)s"%(dic))

   2、 str.format

    Birth:format方法是在Python 2.6中引入的,是字符串类型的内置方法。因为str.format的方式在性能和使用的灵活性上都比%号更胜一筹,所以推荐使用。

      (1)用{}占位,传入参数时需按位置一一对应

          例:

# name = "任金中"
# ginder = "男"
# age = "19"
# stature = "173cm"
# appearance = "帅气"
# print("我是{},性别{},年龄{},身高{},外表比较{}".format(name,ginder,age,stature,appearance))

       (2)通过字典方式格式化

         例:

# dic = {"name":"任金中","ginder":"男","age":"19","stature":"173cm","appearance":"帅气"}
# print("我是{name},性别{ginder},年龄{age},身高{stature},外表比较{appearance}".format(**dic))

      (3)通过关键字参数格式化
       
  例:
#print("我是{name},性别{ginder},年龄{age},身高{stature},外表比较{appearance}".format(name = "任金中",ginder = "男",age = "19",stature = "173cm",appearance = "帅气"))
      (4)使用索引取对应位置的值
         例:
# print('{0}{0}{1}{0}'.format('x','y'))
# print("{2}{0}{1}{0}".format("x","y","z"))、
      (5)格式化填充输出
        
例:
print('{0:*<10}'.format('开始执行'))  #开始执行******
print('{0:*>10}'.format('开始执行'))  #******开始执行
print('{0:*^10}'.format('开始执行'))  #***开始执行***

冒号(:)前面空白或者是0,冒号(:)后边带填充字符(*),只能是一个字符,不指定的话默认是空格填充

^/</>分别是居中、左对齐、右对齐,后面带宽度(字符数量)

      (6)精度与进制
print('{salary:.3f}'.format(salary=1232132.12351))  
#精确到小数点后3位,四舍五入,结果为:1232132.124

print('{0:b}'.format(123))  
# 转成二进制,结果为:1111011

print('{0:o}'.format(9))  
# 转成八进制,结果为:11 print('{0:x}'.format(15)) # 转成十六进制,结果为:f print('{0:,}'.format(99812939393931)) # 千分位格式化(三个数标一次),结果为:99,812,939,393,931


 
   3、 f-string
     Birth:str.format() 比 %格式化高级了一些,但是它还是有自己的缺陷。当需要传入的字符串过多时,仍然会显得非常冗长。
于是在Python 3.6中引入 了f-strings,不仅比str.format更简洁,性能上也更胜一筹。
     PS:f-string是以f或F开头的字符串,核心在于字符串中[]的运用
       1.{}中可以是变量名
         例:
name = "任金中"
ginder = ""
age = "19"
stature = "173cm"
appearance = "帅气"
print(f"我叫{name},今年{age},身高是{stature},长得比较{appearance}")
          2.{}中可以是表达式
         例:
a = 5
b = 50
print(f"c是{a*b}") #c是250
 






原文地址:https://www.cnblogs.com/longhair/p/13786119.html