zoukankan      html  css  js  c++  java
  • python之字符串拼接:%和format

    使用百分号拼接字符串:

    例如:

    msg='i am %s my hobby is...' %'abc'
    print(msg)

    如果需要用2个%s呢?就使用括号
    例如:

    msg='I am %s my hobby is %s' %('abc','DDD')  
    print(msg)
    返回结果:
    i am abc my hobby is DDD

    %s是万能的,可以接收数字、字符串、列表
    缺点是可读性差

    msg='I am %s my hobby is %s' %('abc',123)
    print(msg)
    msg='I am %s my hobby is %s' %('abc',[2,3,4])
    print(msg)

    %.<数字>s对字符串的截取宽度设置
    例如:

    msg='I am %.4s' %'abcdefg'
    print(msg)
    返回结果:
    I am abcd

    %d只接收数字
    如果给字符串、列表等会报错

    msg='I am %s my age is %d' %('abc',19)
    print(msg)

    %f接收浮点数

    msg='Percent %f' %99.97654321234566
    print(msg)
    返回结果:
    Percent 99.976543

    %f保留小数点后2位

    msg='Percent %.2f' %99.97654321888
    print(msg) 
    返回结果:
    Percent 99.98

    %%显示百分比符号,使用2个%符号

    例如:

    msg="Percent %.2f%%" %99.97654321111
    print(msg)

    使用变量的格式化显示字符串
    例如:

    msg="I am %(name)s age %(age)d" %{"name":"alex","age":19}
    print(msg)
    返回结果:
    I am alex age 19

    %s的左右对齐,保留宽度
    例如:
      %-<数字>s 表示左对齐
      %+<数字>s 表示右对齐

    msg='I am %(name)-20s hobby is ...' %{"name":"abc"}
    print(msg)
    返回结果:
    I am abc                  hobby is ...
    
    msg='I am %(name)+20s hobby is ...' %{"name":"abc"}
    print(msg)
    返回结果:
    I am                  abc hobby is ...

    ********format格式化字符串********

    #元组的形式为字符串一一提供

    tpl="i am {}, age {},{}".format("seven",18,'alex')
    print(tpl)

    #字典的形式为字符串提供

    tpl="I am {name},age {age}, really {name}".format(name="seven",age=18)
    print(tpl)   #个人最喜欢这种方式,简单、直接、清晰明了

    #另一种写法:以字典的方式书写,但注意一定要使用**

    tpl="i am {name}, age {age}, really {name}".format(**{"name":"seven","age":18})
    print(tpl)  #**{"name":"seven","age":18}作用就是把键值对取出来转换成name="seven"的方式
    tpl="i am {0[0]}, age{0[1]}, really {0[2]}".format([1,2,3],[11,22,33])
    print(tpl)

    说明:format除提供了字典的key-value形式之外,其余都以元组的形式提供,
      所以展开后得到元组:([1,2,3],[11,22,33])
      所以{0[0]}到元组([1,2,3],[11,22,33])取值就是[1,2,3]中的1;
      所以{0[1]}到元组([1,2,3],[11,22,33])取值就是[1,2,3]中的2;
      所以{0[2]}到元组([1,2,3],[11,22,33])取值就是[1,2,3]中的3

    tpl="i am {:s}, age {:d}, money {:f}".format("seven",18,9999.1)
    说明:
      {:s}代表字符串
      {:d}代表数字
      {:f}代表浮点数

    #如果要传入列表,则要使用1个*
    例如:

    tpl="i am {:s}, age {:d}".format(*["serven",18])    
    li=["seven",19]
    tpl="i am {:s}, age {:d}".format(li)

    说明:如果这样写,本身format会把li加入到元组或列表中,但是li本身就是个列表
    这样就造成列表/元组中的列表,会产生奇怪的问题,所以此时要使用星号:

    tpl="i am {:s}, age {:d}".format(*li)
    使用*把列表中的值取出来,再放到format构造的列表或元组中

    tpl="number: {:b},{:o},{:d},{:x},{:X},{:%}".format(15,15,15,15,15,15.87623,2)
    print(tpl)
    返回结果:
    number: 1111,17,15,f,F,1587.623000%
    
        :b 表示二进制
        :o 表示八进制
        :d 整形数字
        :x 小写十六进制
        :X 大写十六进制
        :% 表示百分号
  • 相关阅读:
    TP5报如下的错误 Indirect modification of overloaded element of thinkpaginatorCollection has no effect【转】
    PHPnumber_format()函数的使用
    蓝桥杯-PREV28-地宫取宝
    HihoCode-1053-居民迁移
    HihoCode-1323-回文字符串
    蓝桥杯-PREV3-带分数
    HDU-6312-Game
    HDU-6438-Buy and Resell
    CF-1117C-Magic Ship
    HDU-2802-F(N)
  • 原文地址:https://www.cnblogs.com/Kumanon/p/10389504.html
Copyright © 2011-2022 走看看